Как обновить матрицу просмотра модели opengl моей собственной матрицей 4x4? - PullRequest
8 голосов
/ 01 февраля 2012

У меня есть матрица 4x4 для преобразования объекта.

float mat44[16];

Но я не знаю, как обновить матрицу OpenGL ModelView, используя мою матрицу.я должен использовать glTranslatef () / glRotatef () с соответствующими значениями из моей матрицы или я должен использовать glLoadMatrix (), glMultMatrix ()?Пожалуйста, помогите.Спасибо.

Ответы [ 2 ]

20 голосов
/ 01 февраля 2012

Если вы хотите применить свое преобразование к текущему преобразованию, уже находящемуся в стеке матриц OpenGL, вам следует написать:

glMultMatrixf(mat44);

Но если вы хотите отбросить то, что в данный момент находится над стеком матриц OpenGL, и использовать собственное преобразование, то вам следует написать:

glLoadMatrixf(mat44);
2 голосов
/ 01 февраля 2012

Для OpenGL-2.1 и более ранних версий используйте glLoadMatrix или glMultMatrix, в зависимости от поставленной задачи.

Для OpenGL-3 и более поздних версий установите их как правильную форму для вашего шейдера, используя один из вариантов glUniformMatrix.

...