我在OpenGL中的矩阵乘法不像预期的那样

时间:2012-12-30 16:33:18

标签: opengl matrix

我正在调试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

你能告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

OpenGL以列主要顺序索引其矩阵,即索引

0 4 8 c
1 5 9 d
2 6 a e
3 7 b f