手把手教你實現openGL的功能哦

來源:互聯網
上載者:User

原文查看

http://www.ibaiyang.org/2012/12/27/a-opengl-like-implementatio/

 

學過openGL人知道,openGL狀態機器的設計著實令人印象深刻。每一種狀態都會一直持續影響後面物體的繪製,直到改變此狀態。

openGL中維護了二套矩陣,模式視圖矩陣,投影矩陣,這二套矩陣完成了所有的從三維到二維的幾何變化,包括旋轉,縮放,平移和投影。同時openGL還維護了二個棧,一個儲存模式視圖矩陣,一個儲存投影矩陣。

千萬不要小看這個棧的設計,我們可以舉一個例子。

 draw_object(1) rotate(1) translate(1)        push_matrix()        draw_object(2)        rotate(2)        translate(2)        pop_matrix() draw_object(3)

其中rotate(2), translate(2)是不會影響draw_object(3)函數的,因為前面push_matrix將當前的壓入棧中,當draw_object(2)後,pop_matrix()又恢複了之前的狀態,故在draw_object(3)時,就恢複到了rotate(1),translate(1)的狀態了。

我抽空用python和pyqt基本實現openGL的三維變化功能和二個棧的類比。
代碼放在我的github中。
https://github.com/baiyang/valleygl

以下是該代碼的運行效果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.