2011-12-26 2 views
1

Я читал спецификацию openGL 1.5 и видел, что любая ссылка на то, что раньше была переменной, содержащей ссылку на матрицу ModelView (например, gl_ModelViewMatrix), устарела и доступна только в каком-то режиме совместимости (что не поддерживается на моем GPU).Как получить матрицу ModelView в GLSL 1.5?

Я видел несколько примеров, сначала извлекающих матрицу ModelView или их создание, а затем их отправку на GPU как единую переменную.

Теперь все это кажется мне просто отсталым; даже для простого Vertex Shader вы во многих случаях захотите использовать какое-то преобразование в геометрии.

Так что мне действительно интересно сейчас; есть any способ получить текущую матрицу ModelView из вершинного шейдера, используя GLSL 1.5?

ответ

4

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

+0

хорошо, это объясняет. Не уверен, если мне это нравится. – Bartvbl

+1

@Bartvbl: Ну, ни одно практическое приложение фактически не использовало матричный стек, кроме загрузки матрицы, созданной где-то еще с помощью glLoadMatrix. Каждая анимационная система будет генерировать данные анимации как готовые к использованию матрицы. Для вычислений представлений вы уже имеете матрицы проекции и просмотра для использования в другом коде, чем OpenGL. Таким образом, весь матричный стек фактически был избыточным и стал громоздким в использовании. Выполнение этой функции с помощью свободно определяемой униформы намного удобнее, когда программа достигает определенной сложности. – datenwolf

0

Нет встроенной матричной системы/lib в ядре openGL - начиная с версии 3. +. Многие люди имели похожие (плохие) мнения об этом «огромном изменении» в openGL.

Для выполнения расчета матрицы вы должны использовать собственный набор функций. См. Библиотеки: GLM или в lighthouse3D.

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

Смежные вопросы