Какая версия OpenGL наиболее стабильна и используется в настоящее время? - PullRequest
4 голосов
/ 12 апреля 2011

Я думал о создании дополнительной оболочки для моего проекта, чтобы использовать OpenGL, а не Allegro. Я не был уверен, какую версию OpenGL выбрать, поскольку знаю, что на некоторых компьютерах не работают последние версии, такие как v4.4. Кроме того, мне нужна версия, которая без проблем компилируется в Linux, Windows, Mac.

Ответы [ 5 ]

7 голосов
/ 12 апреля 2011

Вы захотите посмотреть, какие графические карты будут доступны на ваших целевых системах, и учесть некоторые детали:

  • OpenGL до 1,5 может полностью эмулироваться в программном обеспечении в реальном времени.время на большинстве систем.Вам не обязательно нужна аппаратная поддержка для хорошей производительности.
  • OpenGL 1.4 имеет универсальную поддержку.Практически все оборудование поддерживает это.
  • Mac OS X только поддерживает до OpenGL 2.0 и OpenGL 2.1 , в зависимости от версии ОС и аппаратного обеспечения.Системы, использующие GMA950, поддерживают только OGL1.4.Mac OS X Lion 10.7 поддерживает профиль OpenGL 3.2 Core на поддерживаемом оборудовании.
  • В Linux нередко пользователи специально предпочитают драйверы с открытым исходным кодом альтернативным «двоичным двоичным объектам», поэтому имейте в виду, что версияМеса, которую большинство людей поддерживает только до совместимости с OpenGL 2.1.В следующих версиях есть поддержка OpenGL 3.x.Бинарные двоичные объекты с закрытыми исходными кодами обычно поддерживают самую высокую версию OpenGL для оборудования, включая ядро ​​OpenGL 4.2.

При рассмотрении того, какое оборудование доступно вашим пользователям, аппаратное обеспечение SteamОпрос может помочь.Обратите внимание, что большинство пользователей имеют совместимое с DirectX 9 оборудование, которое примерно эквивалентно OpenGL 2.0.В статье Википедии OpenGL также указано, какое оборудование поставляется с первоначальной поддержкой для каких версий.

Если вы используете библиотеку типа GLEW или GLEE или любую другуюинструментарий, который зависит от них или предлагает аналогичные функциональные возможности (например, SFML или даже Allegro начиная с 4.3), тогда вам не нужно беспокоиться о том, будет ли компилироваться ваш код.Эти наборы инструментов позаботятся о деталях включения расширений и предоставления всех необходимых вам символов.

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

3 голосов
/ 12 апреля 2011

Ваша безопасная ставка - OpenGL 2.1, хотя она должна поддерживаться драйвером вашей целевой системы. OpenGL ES, используемый на нескольких мобильных платформах, по сути является упрощенным OpenGL 2, поэтому даже перенос на него будет довольно простым. Я настоятельно рекомендую использовать libGlew, как сказал VJo.

2 голосов
/ 12 апреля 2011

Речь идет не об операционных системах, а о драйверах видеокарт.

Я думаю, что 1.4 является самой высокой версией, которая поддерживается всеми графическими системами: ATI (AMD), nVidia и Intel IGP.Intel, безусловно, является ограничивающим фактором, даже когда ATI или nVidia не имеют аппаратной поддержки, они выпускают драйверы OpenGL 4.1, которые используют программное обеспечение для эмуляции отсутствующих функций.Не так с Intel.

1 голос
/ 12 апреля 2011

OpenGL - это не библиотека, которую вы обычно компилируете и отправляете сами (если вы не являетесь дистрибьютором Linux и не упаковываете X.Org/Mesa).Ваша программа просто динамически связывается с libGL.so (Linux / BSD), opengl32.dll (Windows, на 64-битных системах, она также называется opengl32.dll, но на самом деле это 64-битная DLL) или OpenGL Framework (MacOS X),Это дает вашей программе доступ к установке системы OpenGL.Версия / профиль, который вы хотите использовать, не влияет на библиотеку, на которую вы ссылаетесь!

Затем, после инициализации вашей программы, вы можете проверить, какая версия OpenGL доступна.Если вы хотите использовать OpenGL-3 или 4, вам придется перепрыгнуть через несколько дополнительных обручей в Windows, чтобы в полной мере использовать его, но, как правило, какая-то оболочка в любом случае помогает вам в создании контекста, сводя его к нескольким строкам..

Затем в программе вы можете реализовать несколько путей кода для различных версий.Обычно более ранние кодовые пути OpenGL разделяют большое подмножество с кодовыми путями более высокой версии.Я рекомендую писать новый код в наивысшей доступной версии, а затем добавлять дополнительные пути кода (часто просто замены, которые могут быть выполнены макросами препроцессора C или аналогичными) для более низких версий, пока вы не достигнете наименьшего общего знаменателя функций, которые вам действительно нужны.

0 голосов
/ 12 апреля 2011

Затем вам нужно использовать OpenGL 1.1 и использовать необходимые (и поддерживаемые) функции посредством использования wglGetProcAddress (в Windows) или glXGetProcAddress (в Linux).

Вместо использования этих двух функций вы можете использовать GLEW library , которая делает это за вас и является кроссплатформенной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...