2016-03-03 62 views
0

我有以下代碼。gluLookAt的輸出存儲在哪裏?

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
gluLookAt(eyeX+eyePos, eyeY, eyeZ, lookatX+eyePos, lookatY, lookatZ, upX, upY, upZ); 
glGetDoublev(GL_MODELVIEW_MATRIX,lookatMatrix); 
glPushMatrix(); 

所以我們在gluLookAt之後有一個矩陣,我假設它存儲在當前矩陣模式棧的頂部。現在,我們使用GetDoulev獲取它的值,那麼爲什麼最終要使用glPushMatrix?

回答

0

glPushMatrix保留一個副本,以便您可以對矩陣堆棧進行進一步操作,但可以使用glPopMatrix輕鬆恢復到以前的狀態。

但事實告訴,不要使用它。矩陣堆棧已經從現代OpenGL中移除,使用像GLM這樣的真正矩陣數學庫比使用OpenGL矩陣堆棧尷尬多了。在您使用glGetDoublev(GL_…_MATRIX, …)的那一刻,以便您可以使用所述矩陣做更多的事情,那麼您做錯了什麼。

只需使用一個真正的矩陣數學庫,並使用glLoadMatrix(如果您絕對必須使用舊式固定功能管線)或將其加載到着色器統一中(這是您絕對應該使用的)只要你可以使用現代的OpenGL)。