Есть хороший учебник, который показывает разницу между OpenGL 1. * и 2. *?
Было бы очень полезно узнать, какие функции я не должен вызывать (например, glBegin (), я полагаю).
Есть хороший учебник, который показывает разницу между OpenGL 1. * и 2. *?
Было бы очень полезно узнать, какие функции я не должен вызывать (например, glBegin (), я полагаю).
Ответы:
На странице начала работы OpenGL.org есть обзор с множеством ссылок на различные учебные пособия.
Короче говоря, OpenGL 2.0 живет между фиксированной функцией (1.x) и полностью программируемым (2.x +) миром; вы все еще можете использовать все, что есть в OpenGL 1.x, при добавлении шейдеров. Двигаясь вперед (3.x +), все виды старых систем с фиксированными функциями начинают устареть, поэтому, возможно, лучше иметь чистый старт, а не смешивать оба мира.
Я также удивлен, что об этом раньше не спрашивали ... или, по крайней мере, я не смог найти его при быстром поиске.
Версии 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 1.x и 2.x, но, скорее всего, не будет учебников, показывающих, как они отличаются с функциями или простотой использования и т. Д.
Возможно, лучше всего найти учебники для конкретной версии opengl, найти похожие учебники и сравнить их самостоятельно.