2014-10-27 4 views
0

У меня вопрос о матрицах проекции, представления и модели OpenGL. В DirectX 9 я могу легко манипулировать содержимым матрицы, а затем применять ее с помощью SetTransformfunction.OpenGL Projection, View и World матрицы

я видел в MSDN OpenGL glLoadMatrixffunction, но только изменяет текущую матрицу, которую я могу изменить на glMatrixModefunction.

Эта функция получает один аргумент с тремя вариантами: GL_MODELVIEW, GL_PROJECTION и GL_TEXTURE. Но в этом проблема. Как изменить матрицу мира?

В DirectX 9 можно использовать SetTransform и один из state types: D3DTS_WORLD (макро), D3DTS_VIEW и D3DTS_PROJECTION и установить матрицы для них.

+0

Вы ограничены использованием старых, архаичных функций? Также я бы рекомендовал никогда ничего не читать о OpenGL от Microsoft, когда-либо. – CoffeeandCode

+0

Действительно, с шейдерами в openGL вы можете напрямую устанавливать и применять свои матрицы (вы даже можете вообще не использовать матрицы) –

+0

Да, я ограничена использованием OpenGL <3 (2.1 max), поэтому glUniform отсутствует , – Popiel

ответ

2

Матрица GL_MODELVIEW - это именно то, что ее зовут; комбинация модели и матриц вида. Обычно сначала применяете свои преобразования представлений, затем для каждой модели вы нажимаете матрицу, применяете преобразования модели, рисуете модель, а затем поместите ее.

Если вы используете шейдеры (и вы должны иметь OpenGL 3.1+ без профиля совместимости), то вы можете использовать форму для передачи матриц в шейдер, как вы хотите, включая разделение модели и матриц вида, если вы поэтому желание.

+0

Спасибо за помощь! Так вот, как это работает! – Popiel