Преподаватель SAE Institute Geneva объяснил, почему до сих пор учит студентов OpenGL ES 3.0
I still teach OpenGL ES 3.0
Элиас Фархан уже несколько лет ведёт в SAE Institute Geneva вводный курс по компьютерной графике и раз за разом задаётся вопросом, не пора ли перейти с OpenGL ES 3.0 на современный API. После конференции Graphics Programming Conference он решил остаться на версии 2012 года: один и тот же C++-код и шейдеры работают на Windows, Linux, Android, Nintendo Switch и в WebGL2 через emscripten. Студенты пишут собственные абстракции — Pipeline, VertexInput, Texture — в общем репозитории, а драйвер сам берёт на себя синхронизацию.
OpenGL ES 3.0 — это мобильный графический API, выпущенный в августе 2012 года, то есть около 14 лет назад (что для компьютерной графики очень долгий срок).
- socalgal2
Лично я бы не стал преподавать OpenGL ES 3.0 или любой другой OpenGL, потому что его конечный автомат (https://webgl2fundamentals.org/webgl/lessons/resources/webgl...) и ужасная система ошибок означают, что отслеживать баги очень сложно. Вместо этого я бы преподавал WebGPU, так как он портируемый и имеет отличные сообщения об ошибках.
Я уверен, что люди будут возражать, но я бы сказал, что WebGPU проще для понимания, имеет лучшие ошибки, не имеет конечного автомата, работает с C++, Rust, JS/TS и другими языками, и ближе к современному программированию на GPU, если вы хотите позже перейти на Metal, D3D12 или Vulkan.
Более того, OpenGL (и ES) — это кошмар из багов и несовместимостей, с которыми студенты могут столкнуться, а WebGPU их исправляет.
Тем не менее, в статье упоминаются платформы Apple, где вы можете использовать ANGLE, если у вас случайно есть студенты, застрявшие там.
- hollowonepl
Я согласен с Adam Sawicki, что это уже не так актуально, но также я верю, что это ценный урок для студентов технических специальностей о том, откуда берётся современность.
Лично я просто не вижу смысла фокусироваться на этом дольше, чем на 1 месяц введения, туториала, прохождения простого примера, демонстрации ограничений и перехода к Vulkan/WGPU с предысторией о том, что есть также DX12 и Metal, которые следуют похожим принципам.
- proc0
Отличный разбор. Мне было интересно, почему программировать на GPU так сложно по сравнению с CPU. Это проблема языковой парадигмы или, может быть, ограничение аппаратного дизайна? Я всегда думаю об этом, глядя на графические API, особенно на Vulkan.
- yunnpp
Я узнал больше о графике, написав программные растеризаторы и трассировщики лучей, чем используя какие-либо API. Если цель — преподавать именно рендеринг на GPU, то OpenGL действительно более пригоден для обучения, чем другие. Но если цель — преподавать концепции графики и рендеринга, то OpenGL и компания просто ужасны и контрпродуктивны.
- avaer
GLES — неплохой способ преподавать графику, но мне бы хотелось, чтобы было что-то среднее между ним и VK.
Худшая часть GL — это загадочное глобальное состояние, которое вы никогда не поймёте, не изучив спецификацию. Миру не помешал бы API, который в основном как GL, но без глобального скрытого синглтона (на поток!) и прочей ерунды за кулисами.