Как я использую последний OpenGL?

довольно в новинку для предмета, и в колледже нам предоставили .dlls каждый раз, когда нам были нужны они. Но у меня никогда не было идеи, какую фактическую версию я использовал, какие расширения я использовал... Это очень сбивает с толку, чтобы быть честным. Я не мог найти ссылку на загрузку на официальном khronos сайте. При нажатии на ссылку SDK OpenGL, просто дарит мне больше документации. Я привык к DirectX, который делает это довольно ясным, какую версию Вы используете. (устройством Вы создаете).

  1. Как я начал бы использовать OpenGL 4.0 сегодня?
  2. Как я включил бы расширение?
  3. Как я знаю, к какой версии OpenGL моя машина способна?
  4. Что-нибудь большое изменение в 4,0? Я не думаю, что должен заботиться о старых версиях, потому что я кодирую OpenGL просто в образовательных целях в течение по крайней мере еще 2 лет.
11
задан Ciro Santilli 新疆改造中心法轮功六四事件 8 September 2016 в 06:26
поделиться

2 ответа

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

Вам не нужно включать другой заголовок или ссылку на другую библиотеку, если вы используете OpenGL 1.0 или OpenGL 4.0. Однако, чтобы использовать OpenGL 4.0, вы должны определить, поддерживается ли он машиной, на которой работает ваша программа. На данный момент только самые последние графические процессоры поддерживают OpenGL 4.0. У вас могут быть больше шансов с OpenGL 3.0

Если вы работаете в Windows, включите "gl / gl.h" и свяжите свою программу с "OpenGL32.lib"

После запуска программы вы можете определить версию OpenGL, поддерживаемую графическим процессором, или включить расширение с использованием glString и wglGetProcAddress. Однако я настоятельно рекомендую вам использовать стороннюю библиотеку ( GLee моя любимая).

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

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

  • если версия OpenGL> = 2, тогда используйте glGenBuffers, glBindBuffer и т. Д.
  • else, выделите и заполните данные в RAM

Вы можете увидеть некоторые примеры на странице GLee, которую я связал выше

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

Более сложный : начиная с OpenGL 3, некоторые функции устарели. Теперь у вас есть два способа инициализировать OpenGL:

  • новый способ (wglCreateContextAttribsARB в Windows), где вы уточняете минимальную версию OpenGL, которую хотите
  • старый способ (wglCreateContext), который требует минимум OpenGL 1.1 (доступны последние версии тоже)

Если вы запрашиваете версию, превосходящую OpenGL 3, устаревшие функции теоретически доступны только благодаря расширению ARB_compatibility, которое может поддерживаться или не поддерживаться картой.На данный момент ARB_compatibility поддерживается всеми существующими графическими процессорами, но в будущем это может перестать быть так.

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

11
ответ дан 3 December 2019 в 08:28
поделиться

Как бы я начал использовать OpenGL 4.0 сегодня?

Простой ответ: сегодня это, вероятно, сложно. Почти не существует аппаратного обеспечения, поддерживающего OpenGL 4.0, а сама спецификация была выпущена всего четыре месяца назад.

Как мне включить расширение?

Используйте решение вроде GLEW или GLee.

Как узнать, на какую версию OpenGL способна моя машина?

См. ответ 2, оба пакета предоставляют эту информацию.

Изменилось ли что-нибудь важное в версии 4.0? Я не думаю, что мне нужно заботиться о старых версиях, потому что я кодирую OpenGL исключительно в образовательных целях еще как минимум 2 года.

Вам определенно нужно заботиться о "старых" версиях, см. ответ 1, особенно потому, что сегодня даже поддержка OpenGL 3.x не является широко доступной.

Для получения дополнительной информации вы можете взглянуть на этот вопрос: Сколько пользователей могут запустить программное обеспечение, использующее OpenGL 3.x?

3
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: