標籤:opengl glmatrixmode glloadidentity opengl編程指南 矩陣
通用的變換函數
在介紹四種變換的具體使用方法時,先簡單介紹下情境變換中用到的通用函數。
函數原型:
Void glLoadIdentity (void)
作用:把當前矩陣設定為單位矩陣,這個函數在每次情境變換之前都很重要,因為絕大多數變換都是把當前矩陣與我們指定的矩陣相乘,然後把結果再設定為當前矩陣(前面已經介紹過:我們的變換實質就是一個4*4的矩陣,不同的變換有不同的參數,我們只需要調用opengl的函數即可,不用直接操縱矩陣)。所以我們在變換之前,把當前矩陣清空成單位矩陣,否則當前矩陣中的參數是上一次變換留下來的(當前矩陣會一致儲存上一次變換時的狀態,這是由於opengl特有的狀態機器制導致的),說了這麼多,大家就記住每次變換之前先調用這個函數,這是一個良好的習慣。
函數原型:
void glMatrixMode(GLenum mode)
作用:mode 指定哪一個矩陣堆棧是下一個矩陣操作的目標,可選值: GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE.
glMatrixMode設定當前矩陣模式:
GL_MODELVIEW,對模型視景矩陣堆棧應用隨後的矩陣操作.
GL_PROJECTION,對投影矩陣應用隨後的矩陣操作.
GL_TEXTURE,對紋理矩陣堆棧應用隨後的矩陣操作.
說白了,就是我們在進行變換之前,要顯式的告訴opengl,我們接下來要進行哪種變換(修改哪種矩陣)。不同的參數對應我們不同的變換。在預設情況下,該函數修改的矩陣式模型視圖矩陣,並且預設情況下,這三個矩陣均為單位矩陣。
此函數與glLoadIdentity()一同使用,這兩個函數一般情況下就是捆綁使用:進行變換時,先說明要對哪種矩陣操作。再清空矩陣。
void init (void) //繪製之前進行初始化一系列動作{ glClearColor (0.0, 0.0, 0.0, 0.0); //將螢幕顏色清除為白色 glMatrixMode(GL_PROJECTION); //設定作業矩陣為投影矩陣,投影矩陣以後會詳細介紹 glLoadIdentity();//將矩陣清空為單位矩陣 glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); //定義正交平行的視景體。 一般用於物體不會因為離螢幕的遠近而產生大小的變換的情況。此函數以為會詳細的講。}
OpenGl學習筆記4之通用的視圖變換函數(glLoadIdentity,glMatrixMode)