openGL基礎知識

轉載自http://tonmly.blog.163.com/blog/static/17471285620116272197507/


你需要明白OpenGL如何繪製並決定我們看到的東西。


相對於OpenGL來說OpenGL ES一個很大的缺點就是除了三角形以外沒有別的圖元類型。我們沒有其它多邊形,所以我們想要創建的所有的對象都必須由三角形構成。我引用一個blog的帖子來說明這個問題: IPhone developer ,同時也推薦他的這些文章 OpenGL ES series.
這裏有更多的關於三角形的東西你需要知道。在OpenGL中,有一個概念叫做彎曲(winding),意思是vertices繪製時的順序。與現實世界中的對象不同,OpenGL中的多邊形一般沒有兩個面。他們只有一個面,一般是正面,一個三角形只有當其正面面對觀察者的時候纔可以被看到。可以配置OpenGL將一個多邊形作爲兩面的,但是默認情況下三角形只有一個可見的面。知道了那邊是多邊形的正面以後,OpenGL就可以少做一半的計算量。如果設置兩面都可視,則需要多的計算。

雖然有時候一個多邊形會獨立地顯示,但是你或許不是非常需要它的背面顯示,經常一個三角形是一個更大的對象的一部分,多邊形的一面將在這個物體的內部,所以永遠也不會被看到。這個沒有被顯示的一面被稱作背面,OpenGl通過繪製的順序來確定那個面是正面哪個是背面。頂點按照逆時針繪製的是正面(默認是這樣,但是可以被改變)。因爲OpenGL能很容易地確定哪些三角形對用戶是可視的,它就可以通過使用Backface Culling來避免爲那些不顯示在前面的多邊形做無用功。

OpenGL - tonmyWu - tonmyWu
 

在上面的示意圖中,左邊青綠色的的三角形是背面,將不會被繪製,因爲它相對於觀察者來說是順時針的。而在右邊的這個三角形是正面,將會被繪製,因爲繪製頂點的順序相對於觀察者來說是逆時針的。


三角形的繪製模式:

GL_TRIANGLES 

- 這個參數意味着OpenGL 使用三個頂點來組成圖形

所以,在開始的三個頂點,將用頂點1,頂點2,頂點3來組成一個三角形。完成後,在用下一組的三個頂點來組成三角形,直到數組結束。

 

GL_TRIANGLE_STRIP

 - OpenGL 的使用將最開始的兩個頂點出發,然後遍歷每個頂點,這些頂點將使用前2個頂點一起組成一個三角形。


GL_TRIANGLE_FAN 

- 在跳過開始的2個頂點,然後遍歷每個頂點,讓OpenGL 將這些頂點於它們前一個,以及數組的第一個頂點一起組成一個三角形。


也就是說,同樣是0,1,2,3這4個頂點。

在STRIP 狀態下是,0,1,2;1,2,3這2個三角形。

在FAN 狀態下是,2,1,0;3,2,0這2個三角形。

 


glLoadIdentity() 只是一個覆蓋(重置)函數,它只是基本重置所有的條件(重置所有狀態)。

 

着色

如何通知矩形繪製從一個顏色到下一個?OpenGL 使用了着色。這裏有兩個着色模型可以在

OpenGL 使用:GL_FLAT&GL_SMOOTH。GL_SMOOTH 是默認的渲染。

 

做一個總結:GL_SMOOTH 是一個平滑着色,這就意味着當你開始填充一個矩形的時候,O

penGL 將使用在我們squareColours[] 數組裏的默認顏色去定義在squareVertices[] 數組裏

的每個頂點。使用插值中每個像素的面積之間的點,順利改變顏色之間的四點。換句話說,

這將是我們出現彩色的矩形。

GL_FLAT 是使用物體的的最後一個頂點的顏色去填充整個圖元。形

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章