Для какой версии OpenGL мне следует кодировать, учитывая соображения совместимости и производительности? [закрыто]


19

Когда спецификация OpenGL обновляется, они только добавляют функции. Таким образом, теоретически, новейшее и лучшее оборудование с поддержкой профилей Core и Compatibility должно прекрасно работать с очень старым кодом OpenGL1.1. Это оказалось правдой. Я потратил 12 месяцев на изучение OpenGL1.1 и хорошо разбираюсь в этом.

Я прочитал несколько глав одной из этих модных новых книг OpenGL4.2. Почти все функции, на которые я полагаюсь, устарели (например, списки отображения), что позволяет мне предполагать, что существуют более эффективные способы сделать все это.

Предположим, что 1.1, вероятно, будет полностью поддерживаться ВСЕМ современным оборудованием. 1.1 был выпущен в 1992 году. Я не кодирую трудный путь только для поддержки 20-летних ПК. :-p Я думаю, что разумно предположить, что большинство геймеров используют аппаратное обеспечение, которое достигает середины 5-летнего возраста.

Я думаю, что новые методы предназначены для того, чтобы универсально быть одной из двух вещей: лучше работать или легче кодировать. Я где-то читал, что это никогда не оба, хотя! XD

Какая версия OpenGL наиболее широко поддерживается аппаратным обеспечением лет 5 назад? Какую версию наиболее целесообразно использовать, учитывая эти соображения?

Ответы:


19

Учитывая ваши соображения, я затем заглянул, чтобы увидеть, когда спецификации OpenGL для каждой версии были выпущены, а также с учетом общего понимания того, что я видел.

OpenGL 3, в котором были представлены FBO, VAO и другие, был выпущен 11 июля 2008 года, почти 5 лет назад. Конечно, вы не можете ожидать, что на всех картах после этой даты будет немедленно доступен OpenGL 3.

Если посмотреть на обзор оборудования Steam , 40% - это DirectX 10. Поскольку для OpenGL 3 требовалась аналогичная видеокарта, обычно можно предположить, что большинство карт DirectX 10 могут работать как минимум с OpenGL 3.

OpenGL 3 поддерживается на картах вплоть до серии GeForce 8xxx, которые были довольно популярны, если я правильно помню. Также интересно отметить, что Intel HD 2000 и 3000 Graphics (Sandy Bridge) поддерживают только до OpenGL 3, так что имейте это в виду, если вы планируете нацеливаться на них.

Вывод: OpenGL 3 - хорошая ставка (также помните, что большинство геймеров, в зависимости от вашей целевой аудитории, вероятно, будут иметь лучшее оборудование, чем в среднем).


Это отличный ответ. Это было именно то понимание, которое я искал.
Suds

3
«Также интересно отметить, что Intel HD 2000 и 3000 Graphics (Sandy Bridge) поддерживают только до OpenGL 3». Примечание: они поддерживают только GL 3.1 (потому что Intel просто все равно). И поскольку это Intel, «поддержка» должна быть взята с недоверием. Их оборудование может поддерживать 3.3, но они этого не раскрывают (потому что, опять же, им все равно). Я бы вообще не использовал OpenGL 3.x на оборудовании Intel. На самом деле, я бы избегал делать что-либо шейдерное на базе аппаратного обеспечения Intel.
Никол Болас

Тогда возникает вопрос; Насколько насыщен рынок оборудованием Intel? Стоит ли в любом случае заботиться о графике Intel и использовать OpenGL3.x? Или достаточно графического оборудования Intel, чтобы иметь значение?
Суды

1
Одной из проблем является OSX. Последний выпуск 10.7.x поддерживает только OpenGL 3.2 , 10.6.x поддерживает только 3.0 (или, может быть, даже 2.x). 10.5.x сильно различается в зависимости от карты, возможны 1.3, 1.5 и 2.0. Эти системы навсегда останутся в этих версиях OpenGL, если пользователь не заплатит Apple за обновление. Там нет обновлений драйвера видеокарты или что-то подобное для OSX, который будет обновлять OpenGL. Другие проблемы - некоторые из встроенных чипсетов Intel в нетбуках. Многие из них только OpenGL 2.0 или хуже.
Дэвид С. Епископ

И тогда у вас есть 3DS, который все еще
качает

8

Я бы начал здесь: http://store.steampowered.com/hwsurvey

Я бы не стал ориентироваться на такой период времени, как процент пользователей, например, если вы настроите таргетинг на 4cpus, вы попадете только на 45% пользователей, но если вы работаете на 2, вы получите около 90%.


1
Где вы видели OpenGL? Я вижу только DirectX (что интересно отметить, если вы планируете ориентироваться только на Windows).
DMan

Я предполагаю, что вы делаете работу, основанную на поломке видеокарты
Джимми

Да - я ничего не видел об OpenGL - но вы можете получить это от моделей карт, или, на самом деле, я полагаю, что между версиями DirectX и OpenGL будет существенная доля корреляции.
лосось

3

Ответ зависит от того, нужно вам или нет работать на графике Intel, выпущенной в указанные вами сроки.

Если вы это сделаете, тогда ограничьте себя OpenGL 2.1 (или даже 1.5), если вы этого не сделаете, тогда 3.x кажется разумным.

Да, старые версии OpenGL все еще работают, и да, с одной стороны, они могут показаться проще. Когда вещи изгибаются из формы, то когда вы пытаетесь делать вещи (и вы это сделаете), они не слишком легко поддерживают. OpenGL 1.1 - это не просто трудный путь, это часто невозможный путь, если вы хотите достичь определенных результатов.


Мне приходит в голову, что я должен добавить пример того, почему 1.1 часто невозможно. Одним из таких, который может быть легко связан с функциональностью 1.1, является несколько проходов смешивания. Поскольку у вас нет FBO, и вы в основном ограничены 8 битами на текстуры каждого компонента, вы обнаружите, что по мере накапливания смешивания вы начнете терять точность. Используйте 3/4/5 проходов, и конечный результат начнет выглядеть как (или хуже) 16-битной или 8-битной графики. Тем не менее, для симуляции эффектов более высокого уровня часто требуется несколько проходов (базовый мультитекстурирование, с которым мы все знакомы) с набором функций 1.1.
Максимус Минимус

Даже графика Intel HD (Sandy / Ivy Bridge) поддерживает только OpenGL 3.1, и ему уже год. Все зависит от того, хотите ли вы поддерживать дешевые (или маломощные) ноутбуки.
Стив Ховард

2
@SteveHoward: Intel HD Graphics может поддерживать OpenGL 4. источник
Янус Троелсен

Эта статья примерно через 3 месяца после того, как я разместил свой комментарий.
Стив Ховард

1

Во-первых, такие вещи OpenGL 1.1, как списки отображения, все равно будут работать в новом контексте, если у вас есть профиль совместимости (как правило, так). Единственная проблема заключается в том, что вы ожидаете портирования на OpenGL ES, одну из графических библиотек, специфичных для консоли (обычно они урезаны OpenGL, аналогично OpenGL ES) или даже WebGL (что в любом случае потребует некоторой доработки).

Лично я бы рекомендовал использовать вершинные / фрагментные шейдеры и VBO. Они существуют уже довольно давно и предлагают отличные улучшения производительности. Возможно, вы могли бы даже предоставить простой вариант возврата, если вы оберните функции в классе.

Вы также можете эмулировать такие вещи, как объекты Vertex Array.


0

С 5-летним аппаратным обеспечением некоторые люди все еще используют XP. А это значит, что вы даже не можете кодировать с DirectX 10 или OpenGL 3. А в OpenGL 3 есть множество функций, которые вам действительно пригодятся, например, фреймбуферы и тому подобное. Честно говоря, я бы немного увеличил ваши системные требования, чтобы вы могли включить эти функции.


8
-1: «На пятилетнем оборудовании некоторые люди все еще используют XP. А это значит, что вы даже не можете кодировать с DirectX 10 или OpenGL 3.» Не правда. OpenGL 3.x прекрасно работает в XP. Это только D3D10, который ограничен XP, по причинам API / драйвера. Это не имеет ничего общего с оборудованием.
Никол Болас

0

Для программного обеспечения 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 и оборудование вы нацеливаете, тем лучше выглядят функции, которые вы можете поддерживать, но только на новейшем и лучшем оборудовании.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.