OpenGL之glLoadIdentity函數(shù)的用法
函數(shù)原型:
?????void glLoadIdentity(void)
函數(shù)說明:
????? OpenGL為我們提供了一個非常簡單的恢復初始坐標系的手段,那就是調(diào)用glLoadIdentity()命令。該命令是一個無參的無值函數(shù),其功能是用一個4×4的單位矩陣來替換當前矩陣,實際上就是對當前矩陣進行初始化。也就是說,無論以前進行了多少次矩陣變換,在該命令執(zhí)行后,當前矩陣均恢復成一個單位矩陣,即相當于沒有進行任何矩陣變換狀態(tài)。
????? 單位矩陣就是對角線上都是1,其余元素皆為0的矩陣。
????? 當您調(diào)用glLoadIdentity()之后,您實際上將當前點移到了屏幕中心:類似于一個復位操作
????? 1.X坐標軸從左至右,Y坐標軸從下至上,Z坐標軸從里至外。
????? 2.OpenGL屏幕中心的坐標值是X和Y軸上的0.0f點。
????? 3.中心左面的坐標值是負值,右面是正值。
???????? 移向屏幕頂端是正值,移向屏幕底端是負值。
?????????移入屏幕深處是負值,移出屏幕則是正值。
????? glLoadIdentity()該函數(shù)的功能是重置當前指定的矩陣為單位矩陣.在語義上,其等同于用單位矩陣調(diào)用glLoadMatrix()。但是,在一些情況下,glLoadIdentity()更加效率。
????? 由于某些原因可能使得當前矩陣中的元素有一些不確定的值,這將導致程序?qū)D形對象進行幾何變形時得到一個非預期的結(jié)果。因此有必要將當前矩陣初始成 一個單位矩陣,即對圖形對象不做任何變換。這就是為什么在調(diào)用過glMatrixMode()命令后,總是要調(diào)用該命令的原因。由于glMatrixMode()命令本身也是一種矩陣變換,它將當前矩陣變成命令參數(shù)所規(guī)定的形式,若不用單位矩陣來替換它,在此矩陣下繪制出的圖形將是難以預計的。
???? 需要注意的是,用單位矩陣替換當前矩陣并不改變當前矩陣模式。
???? 應當說明的是,用一個單位矩陣來替換當前矩陣的做法并非在任何場合下都可以使用。例如,已經(jīng)進行了3次矩陣變換,而現(xiàn)在打算將當前矩陣恢復到第二次變換后的狀態(tài)時,該方法將失效。此時可用glPushMatrix()命令將每次變換前的矩陣壓入矩陣堆棧,在進行完新矩陣中的各種操作后,再利用glPopMatrix()命令將棧頂?shù)木仃噺棾鼍仃嚩褩?,成為當前矩陣?/p>
原文鏈接:https://blog.csdn.net/shuaihj/article/details/7228265