9.03.2010

OpenGL ES 筆記

一堆opengl 的筆記。
ref:
http://wiki.forum.nokia.com/
http://blog.jayway.com/


OpenGL 的繪圖步驟:
  1. 取得 display --- 就是 pc monitor,或是手機的 lcd panel.
  2. initialize EGL
  3. 選一個 config/mode
  4. create一個 context
  5. create一個 用來繪圖的 surface
  6. enable 剛剛create的 context
OpenGL ES 繪圖基本元素(Primitives)
  1. Vertex ( Vertices) : 最小的基本繪圖單位,就是兩線交會的點。(point)
    Vertex 在 OpenGL ES 中被用作描繪3D model 的元素,也被用來指定 camera , light 的位置。
  2. Edge : 連接兩個 Vertex 的直線
  3. Face : 由三個 Vertex 包成的三角形區域。
    當要定義一個face 時,他的三個vertex 的順序是很重要的,vertex 順序被用來判定face 的正面和背面(右手定則?)。有時候,可以指定只 render 正面,好節省時間。
定義一個多邊形 (Polygon)
多邊型的每個面要被拆解成一個一個的三角型,然後把每個三角形的端點(vertex) 寫出來就可以。

所以寫出來,會是一個array:
{
-1.0f, 1.0f, 0.0f, // 0 Top Left
-1.0f, -1.0f, 0.0f, // 1 Bottom Left
1.0f, -1.0f, 0.0f, // 2 Bottom Right
1.0f, 1.0f, 0.0f // 3. Top Right
}


把 vortex 訂出來後,還需要一個資料,告訴OpenGL 哪幾點構成一個 triangle,這個資料叫 indices:
{
0,1,2, // 第一個triangle 由 vertex 0.1.2 構成
0,2,3
};
OpenGL ES 描繪的方式 (render primitive)
剛剛 OpenGL ES 的 primitives 定義 "描述物體的基本元素",現在要講得是如何把這些 "描述" 畫出來。
  1. GL_POINTS : 只描出 定義的點
  2. GL_LINE_STRIP : 依順序描出點之間的線
  3. GL_LINE_LOOP : 和 GL_LINE_STRIP 一樣,但是再加一條 : 最後一點到第一點的線
  4. GL_LINES : 兩兩描出一線
  5. GL_TRIANGLES : 每三點描出一triangle
  6. GL_TRIANGLE_STRIP :有點難,就是每三點描出一triangle外,再包圍起來。
  7. GL_TRIANGLE_FAN : 一樣,有點難,每三點描出一 triangle外,再用扇形圍起來。
所以一般常用的rendering primitives 是 GL_TRIANGLES

沒有留言: