我有4x4矩阵用于对象的转换。
float mat44[16];
但我不知道如何使用我的矩阵更新OpenGL ModelView矩阵。我应该使用glTranslatef()/ glRotatef()与我的矩阵中的相关值,还是应该使用glLoadMatrix(),glMultMatrix()?请帮忙。感谢。
答案 0 :(得分:20)
如果要将转换应用于OpenGL矩阵堆栈中的当前转换,则应编写:
glMultMatrixf(mat44);
但是如果你想丢弃当前在OpenGL矩阵堆栈上的内容并使用你自己的转换,那么你应该写:
glLoadMatrixf(mat44);
答案 1 :(得分:2)
对于OpenGL-2.1及更早版本,请使用glLoadMatrix或glMultMatrix,具体取决于手头的任务。
对于OpenGL-3及更高版本,使用其中一个glUniformMatrix
变体将它们设置为着色器的正确制服。