В чем разница между OpenGL 1.x и 2.x?


13

Есть хороший учебник, который показывает разницу между OpenGL 1. * и 2. *?

Было бы очень полезно узнать, какие функции я не должен вызывать (например, glBegin (), я полагаю).


1
Позвольте мне перефразировать ваш вопрос. В чем разница между рендерингом фиксированных функций и шейдерами?
EnabrenTane

3
Это совершенно другой вопрос.
Яри ​​Комппа

Ответы:


11

На странице начала работы OpenGL.org есть обзор с множеством ссылок на различные учебные пособия.

Короче говоря, OpenGL 2.0 живет между фиксированной функцией (1.x) и полностью программируемым (2.x +) миром; вы все еще можете использовать все, что есть в OpenGL 1.x, при добавлении шейдеров. Двигаясь вперед (3.x +), все виды старых систем с фиксированными функциями начинают устареть, поэтому, возможно, лучше иметь чистый старт, а не смешивать оба мира.

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


Я не могу найти учебник для конкретной версии. (кроме 3.0)
t123

На этой странице есть много ссылок, связанных с «Учебниками и инструкциями», но в основном у вас есть выбор между OpenGL 1.x и «чем-то еще».
Яри ​​Комппа

@ tm1rbrt: Вы не найдете конкретных учебных пособий для 2.1, потому что все действительные учебные пособия 1.x по- прежнему являются действительными учебными пособиями 2.1. Единственная причина перерыва в 3.x заключается в том, что именно там были удалены API. Если вы ищете учебники по шейдерам 2.1-эры, учебники lighthouse3d можно использовать. Однако следует иметь в виду, что аппаратное обеспечение 3.x существует с 2006 года и даже сейчас встроено в материнские платы и даже в процессоры. Так что будущее не в мире 2.x; будущие уроки, как правило, будут сосредоточены на версии 3.x и выше.
Никол Болас

3

Версии OpenGL, по большому счету, не похожи на версии Direct3D. Ваш старый код по-прежнему работает с новыми версиями (за одним исключением). Таким образом, OpenGL v1.4 будет нормально работать под OpenGL 2.1. Версии OpenGL - это дополнения, а не вычитания.

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

Единственное исключение из правила об изменениях API - это OpenGL 3.1 (да, 3.1, а не 3.0). В OpenGL 3.0 ряд API был обозначен как «устаревший». Это означает, что ARB, комитет, отвечающий за OpenGL, может удалить эти функции из более поздних версий. Это удаление произошло в OpenGL 3.1. Спецификация 3.0 содержит большой список устаревших элементов, а спецификация 3.1 соответственно урезана.

Обратите внимание, что вам не нужно заботиться (по крайней мере, в Windows и Linux. MacOSX отличается). Вы можете нормально работать в режиме « совместимости », когда возвращаются все ранее удаленные функции. Реализации OpenGL не должны поддерживать контексты совместимости (а Mac OS X Lion не поддерживает. Он поддерживает ядро ​​2.1 или 3.2, по вашему запросу), но все они по-прежнему поддерживают. Просто для обратной совместимости со старыми приложениями.


Можете ли вы добавить что-нибудь о OpenGL 4. *?
Кромстер

@ Кром: нечего сказать. Так же, как переход с 1.x на 2.x, ничего не было удалено.
Никол Болас

0

Я считаю, что есть учебники для opengl 1.x и 2.x, но, скорее всего, не будет учебников, показывающих, как они отличаются с функциями или простотой использования и т. Д.

Возможно, лучше всего найти учебники для конкретной версии opengl, найти похожие учебники и сравнить их самостоятельно.


Серьезно, кто случайно понижает мои комментарии?
LizardGamer

Почему здесь отрицательные голоса? Не отличный ответ, но отрицательные отзывы? Точно сказать не могу. Вопрос действительно требует чего-то не очень обычного ... Учебник для демонстрации различий, в основном это не то, что делают учебники ...
Notabene

@LizardGamer Я вижу, что вы присоединились к gamedev.SE несколько дней назад, поэтому я хотел бы сказать: «Добро пожаловать!». Тем не менее, вы должны прочитать FAQ здесь: gamedev.stackexchange.com/faq Этот ответ является прекрасным примером того ответа, который вы НЕ хотите давать. Постарайтесь быть более конкретным и определенно более конструктивным как с вашими вопросами, так и с вашими ответами. FAQ должен помочь вам понять цель этого сайта и тот контент, который мы ищем. Удачи!
Amplify91

@notabene этот ответ на самом деле не отвечает на вопрос. Единственное предложение, которое он дает, - это «поиск ответа». Очевидно, что ОП уже делает это, задавая вопрос здесь.
Amplify91

@ Amplify91 Спасибо за единственное приветствие, которое я получил, и я уже прочитал FAQ, я не вижу, как это пример того, что не спрашивать? Плюс это действительно отвечает на вопрос, так как я не видел никаких обучающих программ, связанных со сравнением версий opengl
LizardGamer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.