9.03.2010

OpenGL ES 筆記 - III

from : http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es


原來的OpenGL 包涵很多none-effecicent api,OpenGL ES 把所有none-effiicienct api 都拿掉了。

Config

EGLConfig 是要告訴 OpenGL 目前這個hardware platform surface 的 rendering format。
使用 eglGetConfigs( ) 可以取出目前這個platform 所有 support 的 rendering format。

要決定 config 有很多複雜的動作:

詢問目前 platform support 的 config 有哪些。
設定目前要用的config

config 是由一堆 attrib 組成,EGL 用一維 array 來代表:分別是
{attrib1,value1,attrib2,value2...EGL_NONE};

Attrib

EGL_BUFFER_SIZE
Color buffer depth (bit 數)
= RED_SIZE + GREEN_SIZE + BLUE_SIZE + ALPHA_SIZE



輸入Vertex array 與 繪圖

畫圖的動作分成兩部份:
  • 將 定義 Vertext Point 的 Array 丟進 OpenGL
  • 要 OpenGL 以 XXX 的順序畫圖
所以需要提供兩種資料:
  • Vertex point array
  • Vertex Draw Sequence
第一個資料用 glVertexPointers( ) function 來送入 OpenGL。
第二個資料用 glDrawElements( ) 時傳入。
void glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);其中 size 是每一個 vertex 的 coordinate number -- 就是一個Vertex 需要幾筆資料來表示。因為是3維座標,所以寫 3 (default 是 4).

void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);其中 indices 就是繪出的順序。
indices 的內容通常是:{0,4,1,0,9,4,9,5,4}這是說,先由點 0,4,1 畫出一個三角形,再用點 0,9,4 話一個,然後是點 9,5,4 的三角形。

沒有留言: