2011-08-04 104 views
8

我正在閱讀一本關於OpenGL,SDL的書,並閱讀了一些OpenGL文檔。我也讀過這篇文章:What does glLoadIdentity() do in OpenGL?爲什麼每次調用glMatrixMode之後都必須調用glLoadIdentity?

我正在理解glLoadIdentity()所做的事情,以及爲什麼它在一般意義上被使用(將當前矩陣返回到其原始狀態)。我不知道的是爲什麼我將它恢復到原來的狀態。例如:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

glOrtho(0.0f, 640, 480, 0.0f, -1.0f, 1.0f); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

我不知道是什麼原因glLoadIdentity()的每次調用glMatrixMode後調用。

回答

13

When to call glMatrixMode() - 第一答案試圖解釋:

glLoadIdentity()通常被立即稱爲矩陣模式改變後,所以你開始「新鮮」如果你願意。矩陣變換例如gluPerspective(),glOrtho(),glFrustum(),glRotate(),glMultMatrix(),glTranslate()是累積運算,因爲它們聚合在一起,允許您描述複雜的3D世界空間變換或描述OpenGL觀察卷。例如:如果我想在+ X方向上翻譯一個立方體,然後圍繞Z軸旋轉,我發出一個glRotate()後跟一個glTranslate()。 glLoadIdentity()用單位矩陣消除矩陣(當前矩陣模式),因此在glPoadIdentity()之後的gluPerspective()等價於對glLoadIdentity()的單個調用。換句話說,那個序列是無意義的。

+1

完美的,謝謝你指出答案。下次我會多挖。 –

相關問題