2012-12-30 41 views
1

我正在調試OpenGL中的矩陣乘法,並且在得到的矩陣中得到一個執行位置向量。我在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]和2xcos(45)+ 2xsin(45) rottrs [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

OpenGL的指數其矩陣列優先的順序,即指數走

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

我知道它是列爲主。但我的問題是關於第3和第(使用您的指數)元素的值。例如,第3位應該是0; 2xcos(45)-2xsin(45)的結果。謝謝。 – user1877329