довольно в новинку для предмета, и в колледже нам предоставили .dlls каждый раз, когда нам были нужны они. Но у меня никогда не было идеи, какую фактическую версию я использовал, какие расширения я использовал... Это очень сбивает с толку, чтобы быть честным. Я не мог найти ссылку на загрузку на официальном khronos сайте. При нажатии на ссылку SDK OpenGL, просто дарит мне больше документации. Я привык к DirectX, который делает это довольно ясным, какую версию Вы используете. (устройством Вы создаете).
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, вы должны определять каждую функциональность индивидуально.
Например, вы хотите использовать буфер вершин. Ваш код должен быть таким:
Вы можете увидеть некоторые примеры на странице GLee, которую я связал выше
Конечно, вы не можете сделать это для всего. Например, шейдеры не могут выполняться без определенного расширения, и вы должны просто отобразить сообщение об ошибке, если они недоступны.
Более сложный : начиная с OpenGL 3, некоторые функции устарели. Теперь у вас есть два способа инициализировать OpenGL:
Если вы запрашиваете версию, превосходящую OpenGL 3, устаревшие функции теоретически доступны только благодаря расширению ARB_compatibility, которое может поддерживаться или не поддерживаться картой.На данный момент ARB_compatibility поддерживается всеми существующими графическими процессорами, но в будущем это может перестать быть так.
Если вы запрашиваете версию ниже OpenGL 3, эти функции не считаются устаревшими, но инициализация завершится неудачно, если они больше не поддерживаются картой.
Как бы я начал использовать OpenGL 4.0 сегодня?
Простой ответ: сегодня это, вероятно, сложно. Почти не существует аппаратного обеспечения, поддерживающего OpenGL 4.0, а сама спецификация была выпущена всего четыре месяца назад.
Как мне включить расширение?
Используйте решение вроде GLEW или GLee.
Как узнать, на какую версию OpenGL способна моя машина?
См. ответ 2, оба пакета предоставляют эту информацию.
Изменилось ли что-нибудь важное в версии 4.0? Я не думаю, что мне нужно заботиться о старых версиях, потому что я кодирую OpenGL исключительно в образовательных целях еще как минимум 2 года.
Вам определенно нужно заботиться о "старых" версиях, см. ответ 1, особенно потому, что сегодня даже поддержка OpenGL 3.x не является широко доступной.
Для получения дополнительной информации вы можете взглянуть на этот вопрос: Сколько пользователей могут запустить программное обеспечение, использующее OpenGL 3.x?