OpenGL не является библиотекой с различными номерами версий, и тому подобное. Вместо этого это один большой стандарт, который драйверы графики должны поддерживать самостоятельно. Следовательно, некоторые видеокарты могут не поддерживать последние версии OpenGL, в то время как в будущем некоторые карты могут не поддерживать более старые версии.
Вам не нужно включать другой заголовок или ссылку в другую библиотеку, если вы используете OpenGL 1.0 или используете OpenGL 4.0. Однако для использования OpenGL 4.0 вам необходимо определить, поддерживается ли это машиной, на которой работает ваша программа. На данный момент только последние графические процессоры поддерживают OpenGL 4.0. Вы можете иметь лучшие шансы с OpenGL 3.0
Если вы на Windows, включают в себя «Gl/gl.h» и связать свою программу с «OpenGL32.lib»
После того, как программа запущена, вы можете обнаружить версию OpenGL, поддерживаемую GPU, или разрешить расширение с помощью glString и wglGetProcAddress.Однако я настоятельно рекомендую вам использовать стороннюю библиотеку (GLee - мой любимый).
Программирование с OpenGL отличается от программирования с помощью DirectX. DirectX гарантированно поддерживает все функциональные возможности используемой версии. Когда вы что-то кодируете с помощью OpenGL, вы должны скорее определять каждую функциональную функцию отдельно.
Например, скажем, что вы хотите использовать буфер вершин. Ваш код должен быть таким:
- если OpenGL версии> = 2, а затем использовать glGenBuffers, glBindBuffer и т.д.
- еще, выделить и заполнить данные в оперативной памяти
Вы можете увидеть некоторые примеры на странице GLee, с которой я связан выше
Конечно, вы не можете сделать это для всего. Шейдеры, например, не могут быть выполнены без определенного расширения, и вы должны просто отображать сообщение об ошибке, если они недоступны.
Сложнее: начиная с OpenGL 3, некоторые функции устарели. Теперь у вас есть два способа initialisate OpenGL:
- нового путь (wglCreateContextAttribsARB на Windows), где вам точный минимум OpenGL версии вы хотите
- старый способ (wglCreateContext), который запрашивает минимум OpenGL 1.1 (недавний версии также доступны)
Если вы запрашиваете версию, превосходящую OpenGL 3, то устаревшие функции теоретически доступны только благодаря расширению ARB_compatibility, которое может поддерживаться или не поддерживаться картой. На данный момент ARB_ совместимость поддерживается всеми существующими графическими процессорами, но в будущем это может быть уже не так.
Если вы запрашиваете версию, уступающую OpenGL 3, то эти функции не являются, считаются устаревшими, но инициализация завершится неудачей, если они больше не поддерживаются картой.
Так ли Glee новый Glut? –
GLUT - это портативная библиотека, которая позволяет вам создавать окно OpenGL и извлекать пользовательский ввод, в то время как GLee позволяет вам легко использовать функции, поступающие из расширений или более поздних версий. – Tomaka17
Обратите внимание, что GLEW поддерживает OpenGL 4.0, в то время как GLee поддерживает OpenGL до версии 3.0. –