glPushMatrix();glPopMatrix();以及glMatrixMode的用法

來源:互聯網
上載者:User

所有的這幾個函數的本質都是對座標系的操作。

前提知識:

1。每一種矩陣對應著一種座標系。見圖一

2。每一次對矩陣的操作都是對當前矩陣進行的。確切的說,作為一種狀態機器,每一時刻在矩陣方面只能有一種狀態。

3。每一次壓棧和出棧都對應著一種對座標系的操作。

4。我們所有對矩陣的操作都是對矩陣棧的棧頂矩陣進行的。

 

圖一

全域座標系中有一個局部座標系,這個座標系的狀態對應著一種矩陣。假如當前矩陣為該矩陣,則該矩陣為矩陣棧中的棧頂元素。假如此時又進行了一系列glTranslate(),glRotatef()等操作,都是對當前矩陣也就是棧頂矩陣進行了修改。若此時調用glPushMatrix()函數,則將該矩陣壓入棧中第二層的位置,當然此時棧頂位置的矩陣也與此矩陣相同。

當進行完一系列變換之後,棧頂矩陣為該矩陣。若此時調用glPopMatrix()函數,則恢複當前矩陣為該座標系的狀態。以前所進行的有關修改都被忽略了。

記住一句話,所有對矩陣進行的操作都是對棧頂矩陣進行的,壓進去的矩陣式哪個矩陣,當前矩陣就是哪個矩陣,彈出來的是哪個矩陣,當前矩陣就為哪個矩陣。

記住:一個矩陣對應一個局部座標系。

glPushMatrix
pushes the current matrix stack down by one, duplicating the current matrix. That is, after a 
glPushMatrix call, the matrix on top of the stack is identical to the one below it.

見圖二:

 

 

 圖二

glMatrixMode()的作用就是指定當前操作的矩陣為哪一個矩陣。總共有三種參數類型

1。GL_PROJECTION    表示當前操作的矩陣為透視矩陣,用於設定視景體的矩陣

2.GL_MODEVIEW          表示當前操作的矩陣為模型視點矩陣,用於對三維情境中座標系的變換操作。

 

摘自:

http://wylikang.blog.163.com/blog/static/162869843201061792234968/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.