2010-07-22 2 views
10

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

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

ответ

10

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, то эти функции не являются, считаются устаревшими, но инициализация завершится неудачей, если они больше не поддерживаются картой.

+0

Так ли Glee новый Glut? –

+0

GLUT - это портативная библиотека, которая позволяет вам создавать окно OpenGL и извлекать пользовательский ввод, в то время как GLee позволяет вам легко использовать функции, поступающие из расширений или более поздних версий. – Tomaka17

+1

Обратите внимание, что GLEW поддерживает OpenGL 4.0, в то время как GLee поддерживает OpenGL до версии 3.0. –

3

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

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

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

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

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

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

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

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

Для некоторых более подробной информации, вы можете захотеть взглянуть на этот вопрос: How many users could run software that uses OpenGL 3.x?

+0

Могу ли я исправить вас тем фактом, что у бытовой техники был OpenGL 3.x уже пару месяцев. Nvidia и ATI неплохо справились с тем, чтобы мы быстро поддерживали новые карты (включая все, что было до 2 лет (!)). Не знаю о Intel, но если использовать причудливый OpenGL, это проблема, Intel не будет вариантом, действительно. – rubenvb

+0

Итак, что мне нужно для загрузки, где можно использовать OpenGL? Какая бы последняя версия не поддерживалась? – Blub

+1

NVIDIA поддерживает OpenGL 4.0 в драйвере Windows 197.44 и Linux-драйвере 195.36.07.04, а затем и на всех чипах серии «Fermi» 400 серии. Я считаю, ATi поддерживает его на своих сериях 5000. Поддержка OpenGL 3 поставляется с каждой картой с GeForce 8-series, и я думаю, что Radeon 3000-series. – greyfade

0

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

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

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

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

Смежные вопросы