Когда спецификация OpenGL обновляется, они только добавляют функции. Таким образом, теоретически, новейшее и лучшее оборудование с поддержкой профилей Core и Compatibility должно прекрасно работать с очень старым кодом OpenGL1.1. Это оказалось правдой. Я потратил 12 месяцев на изучение OpenGL1.1 и хорошо разбираюсь в этом.
Я прочитал несколько глав одной из этих модных новых книг OpenGL4.2. Почти все функции, на которые я полагаюсь, устарели (например, списки отображения), что позволяет мне предполагать, что существуют более эффективные способы сделать все это.
Предположим, что 1.1, вероятно, будет полностью поддерживаться ВСЕМ современным оборудованием. 1.1 был выпущен в 1992 году. Я не кодирую трудный путь только для поддержки 20-летних ПК. :-p Я думаю, что разумно предположить, что большинство геймеров используют аппаратное обеспечение, которое достигает середины 5-летнего возраста.
Я думаю, что новые методы предназначены для того, чтобы универсально быть одной из двух вещей: лучше работать или легче кодировать. Я где-то читал, что это никогда не оба, хотя! XD
Какая версия OpenGL наиболее широко поддерживается аппаратным обеспечением лет 5 назад? Какую версию наиболее целесообразно использовать, учитывая эти соображения?
Я бы начал здесь: http://store.steampowered.com/hwsurvey
Я бы не стал ориентироваться на такой период времени, как процент пользователей, например, если вы настроите таргетинг на 4cpus, вы попадете только на 45% пользователей, но если вы работаете на 2, вы получите около 90%.
источник
Ответ зависит от того, нужно вам или нет работать на графике Intel, выпущенной в указанные вами сроки.
Если вы это сделаете, тогда ограничьте себя OpenGL 2.1 (или даже 1.5), если вы этого не сделаете, тогда 3.x кажется разумным.
Да, старые версии OpenGL все еще работают, и да, с одной стороны, они могут показаться проще. Когда вещи изгибаются из формы, то когда вы пытаетесь делать вещи (и вы это сделаете), они не слишком легко поддерживают. OpenGL 1.1 - это не просто трудный путь, это часто невозможный путь, если вы хотите достичь определенных результатов.
источник
Во-первых, такие вещи OpenGL 1.1, как списки отображения, все равно будут работать в новом контексте, если у вас есть профиль совместимости (как правило, так). Единственная проблема заключается в том, что вы ожидаете портирования на OpenGL ES, одну из графических библиотек, специфичных для консоли (обычно они урезаны OpenGL, аналогично OpenGL ES) или даже WebGL (что в любом случае потребует некоторой доработки).
Лично я бы рекомендовал использовать вершинные / фрагментные шейдеры и VBO. Они существуют уже довольно давно и предлагают отличные улучшения производительности. Возможно, вы могли бы даже предоставить простой вариант возврата, если вы оберните функции в классе.
Вы также можете эмулировать такие вещи, как объекты Vertex Array.
источник
С 5-летним аппаратным обеспечением некоторые люди все еще используют XP. А это значит, что вы даже не можете кодировать с DirectX 10 или OpenGL 3. А в OpenGL 3 есть множество функций, которые вам действительно пригодятся, например, фреймбуферы и тому подобное. Честно говоря, я бы немного увеличил ваши системные требования, чтобы вы могли включить эти функции.
источник
Для программного обеспечения 3d характерно иметь пути к коду как для «базовой» графической версии API, так и для «последней и самой лучшей» версии API.
Обычными базовыми графическими версиями являются D3D9 и OpenGL 2.1 / GLSL 120. В обоих случаях отсутствуют геометрические шейдеры, поскольку старое оборудование их не поддерживает.
Другим базовым вариантом является ANGLE, то есть GLES 2.0 плюс EGL, который работает на D3D9, настольном OpenGL и мобильном GLES 2.0. Это серверная часть для Google Chrome и WebGL в Chrome и Firefox.
http://code.google.com/p/angleproject/
Что касается «последней и самой лучшей» версии, которую вы выбираете, то она более сложная. Чем более свежее API и оборудование вы нацеливаете, тем лучше выглядят функции, которые вы можете поддерживать, но только на новейшем и лучшем оборудовании.
источник