1

我正在调试 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[12] 中的 2xcos(45)-2xsin(45) 和 rottrs[14] 中的 2xcos(45)+2xsin(45) 因为 rot[0]=cos(45) 和 rot [2]=-罪(45)

但我有相反的情况。调试器显示:

rottrs[12]=2.8284271

rottrs[13]=2.0000000

rottrs[14]=0.00000000

rottrs[15]=1.0000000

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

4

1 回答 1

0

OpenGL按列主要顺序索引它的矩阵,即索引去

0 4 8 c
1 5 9 d
2 6 a e
3 7 b f
于 2012-12-30T16:52:45.783 回答