Лучше ли пропускать OpenGL 2.X и начать изучать OpenGL 3.X?

Существуют ли большие различия в OpenGL 3.x vs 2.x? Разве это трата времени на изучение OpenGL 2.x или они оба следуют одной и той же концепции? Я думаю, что я где-то читал, что 2.x был основан на состоянии и что 3.x не был, это правильно?

Ответ 1

Узнайте все, что написано в большинстве учебных материалов. Учебники NeHe - это хорошее место для начала.

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

(См. ответ Malte Clasen.)

Ответ 2

Будьте осторожны. OpenGL 3 отменяет множество функций, особенно в первые дни OpenGL. Если вы начнете с устаревших руководств (как и большинство NeHe), скорее всего, вы привыкнете к устаревшему стилю OpenGL 2.

В OpenGL 3 нет конвейера с фиксированной функцией (если вы не используете функции обратной совместимости). Вы должны использовать шейдеры. Больше нет glBegin/glEnd. Вы должны использовать вершинные буферы. Оба уже доступны в OpenGL 2, но большинство учебных пособий начинаются с glBegin/glEnd и устанавливают свойства цвета OpenGL. Это очень важная разница.

OpenGL 2 предоставляет множество способов разместить что-то на экране, каждый из которых покрыт, по крайней мере, одним популярным учебным пособием. OpenGL 3 капли многих из них, в том числе "новички" подмножества OpenGL 2 (фиксированная функция glBegin/glEnd). Поэтому, если вы хотите нацелиться на OpenGL 3 в долгосрочной перспективе, пойдите для этого с самого начала. Нет ничего более демотизирующего, чем застревание в тупике.

Ответ 3

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

Ответ 4

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

http://www.arcsynthesis.org/gltut/

Ответ 5

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

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

EDIT: Кроме того, посмотрите на этот вопрос для некоторых рекомендаций книги, основываясь на вашем решении.