我正在调试OpenGL中的矩阵乘法,我在结果矩阵中得到了一个被执行的位置向量。
这是我的代码:
{
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(45,0.0f,1.0f,0.0f);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&rot);
glLoadIdentity();
glTranslatef(2.0f,2.0f,2.0f);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&trs);
glLoadIdentity();
glLoadMatrixf(rot);
glMultMatrixf(trs);
glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *)&rottrs);
glPopMatrix();
}
从纯粹的数学角度来看,我应该在rottrs中获得2xcos(45)-2xsin(45)[12]和在rottrs中获得2xcos(45)+ 2xsin(45)[14] 因为rot [0] = cos(45)和rot [2] = - sin(45)
但我有反过来。调试器显示:
rottrs [12] = 2.8284271
rottrs [13] = 2.0000000
rottrs [14] = 0.00000000
rottrs [15] = 1.0000000
你能告诉我哪里出错了吗?
答案 0 :(得分:0)
OpenGL以列主要顺序索引其矩阵,即索引
0 4 8 c
1 5 9 d
2 6 a e
3 7 b f