Как использовать последний OpenGL?

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

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

Ответ 1

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, выделять и заполнять данные в оперативной памяти

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

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

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

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

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

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

Ответ 2

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

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

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

Используйте такое решение, как GLEW или GLee.

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

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

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

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

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

Ответ 3

После OpenGL 1.2 все расширения должны быть загружены (если вы используете Windows) через поставляемый поставщиком интерфейс для видеокарт. Для того, чтобы карты разрабатывали функции, которые все еще были доступны программистам, они используют стандарт OpenGL.

вам нужно будет включить GL/gl.h, который вы сможете найти достаточно легко, и ссылку u на opengl32.a или любую библиотеку ur opengl. что дает вам самую основную функциональность.

если вы хотите использовать большинство функций, что-то прошлое 1.2, вам нужно либо сделать очень специфические очень раздражающие запросы на загрузку расширения для каждой функции, которую вы хотите использовать, либо просто захватить glew или GLee. Я использовал и то, и другое, но не уверен, что я предпочитаю. GLee немного легче, и мне это нравится совсем немного, но у GLEW есть OpenGL 4, и они оба хороши, поэтому, вероятно, покажутся на данный момент, я думаю.

В любом случае, это несколько месяцев спустя, и теперь все больше и больше карт с gl4, если вы начнете развиваться в контексте opengl 3.1+/4, теперь вы сможете развернуть его на большинстве игровых или рабочих компьютеров после следующего года и наполовину наверняка.