Как мне использовать последнюю версию OpenGL? - PullRequest
11 голосов
/ 22 июля 2010

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

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

Ответы [ 3 ]

11 голосов
/ 22 июля 2010

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

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

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

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

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

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

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

3 голосов
/ 22 июля 2010

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

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

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

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

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

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

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

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

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

0 голосов
/ 31 декабря 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...