OpenGL函式思考 glLoadIdentity

2021-06-20 19:06:30 字數 1084 閱讀 7895

**:

函式原型:

void glloadidentity(void)

函式說明:

opengl為我們提供了乙個非常簡單的恢復初始座標系的手段,那就是呼叫glloadidentity()命令。該命令是乙個無參的無值函式,其功能是用乙個4×4的單位矩陣來替換當前矩陣,實際上就是對當前矩陣進行初始化。也就是說,無論以前進行了多少次矩陣變換,在該命令執行後,當前矩陣均恢復成乙個單位矩陣,即相當於沒有進行任何矩陣變換狀態。

單位矩陣就是對角線上都是1,其餘元素皆為0的矩陣。

當您呼叫glloadidentity()之後,您實際上將當前點移到了螢幕中心:類似於乙個復位操作

1.x座標軸從左至右,y座標軸從下至上,z座標軸從裡至外。

2.opengl螢幕中心的座標值是x和y軸上的0.0f點。

3.中心左面的座標值是負值,右面是正值。

移向螢幕頂端是正值,移向螢幕底端是負值。

移入螢幕深處是負值,移出螢幕則是正值。

glloadidentity()該函式的功能是重置當前指定的矩陣為單位矩陣.在語義上,其等同於用單位矩陣呼叫glloadmatrix()。但是,在一些情況下,glloadidentity()更加效率。

由於某些原因可能使得當前矩陣中的元素有一些不確定的值,這將導致程式對圖形物件進行幾何變形時得到乙個非預期的結果。因此有必要將當前矩陣初始成 乙個單位矩陣,即對圖形物件不做任何變換。這就是為什麼在呼叫過glmatrixmode()命令後,總是要呼叫該命令的原因。由於glmatrixmode()命令本身也是一種矩陣變換,它將當前矩陣變成命令引數所規定的形式,若不用單位矩陣來替換它,在此矩陣下繪製出的圖形將是難以預計的。

需要注意的是,用單位矩陣替換當前矩陣並不改變當前矩陣模式。

應當說明的是,用乙個單位矩陣來替換當前矩陣的做法並非在任何場合下都可以使用。例如,已經進行了3次矩陣變換,而現在打算將當前矩陣恢復到第二次變換後的狀態時,該方法將失效。此時可用glpushmatrix()命令將每次變換前的矩陣壓入矩陣堆疊,在進行完新矩陣中的各種操作後,再利用glpopmatrix()命令將棧頂的矩陣彈出矩陣堆疊,成為當前矩陣。

OpenGL函式思考 gluLookAt

opengl函式思考 glulookat 函式原型 void glulookat gldouble eyex,gldouble eyey,gldouble eyez,gldouble centerx,gldouble centery,gldouble centerz,gldouble upx,gld...

OpenGL函式思考 glBlendFunc

opengl函式思考 glblendfunc 函式原型 void glblendfunc glenum sfactor,glenum dfactor 引數說明 函式說明 在rgb模式下,可以使用把引入的rgba值 源 與幀快取中的rgba值 目標 相融合的融合函式來繪製畫素。預設時,融合是關閉的,可...

OpenGL函式思考 glMatrixMode

函式原型 void glmatrixmode glenum mode 引數說明 mode 指定哪乙個矩陣堆疊是下乙個矩陣操作的目標,可選值 在每個矩陣模式下都有乙個矩陣對陣,在gl modelview模式中,堆疊深度至少為32 在gl projection和gl texture模式中,堆疊深度至少為...