Подтвердить что ты не робот

Какую версию OpenGL я должен изучить?

Возможный дубликат:
Какую версию OpenGL использовать?

Я уже давно изучаю 3D-графический язык, и я наконец решил изучить OpenGL. Тем не менее, я работаю на Mac, и официально эта самая высокая версия OpenGL для Mac - 2.1, но она может поддерживать 3,3 неофициально через те тесты, которые я сделал.

Я хотел бы разрабатывать приложения, которые будут работать на нескольких платформах, но какая версия будет лучше всего изучать?

4b9b3361

Ответ 1

Хороший компромисс между переносимостью и до сих пор изучающий "современный OpenGL-путь" - это примерно "подмножество OpenGL ES 2.0 OpenGL 2.1". Это дает вам возможность переносить

  • OSX, поскольку вы упоминаете

  • Windows, очевидно

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

  • Платформы для смартфонов, такие как iOS и Android.

OpenGL 1.x еще более портативен (например, более старые версии для iOS и Android поддерживают только OpenGL ES 1.x), но классическая модель программирования с фиксированной функцией несколько отличается от современной, основанной на буферных объектах и ​​шейдерах, и использует немедленного режима легко приводит к проблемам с производительностью при рендеринге множества вершин. Так что, вероятно, этого не стоит, ИМХО.

Ответ 2

Моя рекомендация - узнать не меньше версии 3.2. Если 3.3 поддерживается (даже неофициально), идите на это.

OpenGL 3.3 уже является "последним поколением", чем "край кровотечения". Вам нужно искать трудно найти карту, которая не поддерживает OpenGL 3.3, и вы получаете карты с поддержкой 4.x в диапазоне $30.

В версии 2.x вы должны испытывать большую боль, чтобы обеспечить доступность даже самых основных функций, которые вы используете каждый день, и в итоге вы создаете два или три пути кода в зависимости от того, какое расширение вы должны использовать и о том, какой предел.
В версии 3.3 большинство функций, которые вы хотите использовать каждый день, являются основными (гарантированный стандарт), и большинство ограничений имеют гарантированное минимальное значение, которого в любом случае достаточно для большинства вещей. Функции, которые не являются основными в 3.3, немногочисленны (и вы не умрете, если у вас их нет), и вы можете в значительной степени просто подключить их, если они там, и забыть о них, т.

Существует огромное изменение в парадигмах между 2.1 и 3.3 (что вам придется переучивать позже, если вы начинаете с 2.x первым!), и есть заметные изменения в GLSL между 3.1 и 3.2, которые делают запись шейдера код, который работает как для испытания, так и для невозможного.
В версии 3.2 все гладко. Новые функции доступны или они не... используют их или не... но вы можете в принципе написать один кусок кода для запуска во всех версиях.

Ответ 3

Если ваша цель - максимальная совместимость, я бы предпочел взглянуть на WebGL или закрыть родственника, OpenGL ES. Понятия OpenGL ES (по крайней мере, в версии 2.0) довольно близки к концепциям OpenGL 4 (передача данных на основе буфера, универсальные шейдеры и т.д.).

Я думаю, что, изучив 2.1, вы узнаете некоторые устаревшие концепции, которые вам скоро придется переучивать, например, прямой режим или, вернее, целые fixed- функциональный конвейер, который был сокращен в более поздних версиях.

Вы также можете начать изучение 3.x, так как вы изучите текущие концепции и функции. Не беспокойтесь о "официально поддерживаемой" версии.