OPenGL ES常用API:
GL_TRIANGLE_STRIP: 連續畫三角形
GL_TRIANGLE_FAN: 畫三角扇形
glClearColor( 0.f, 0.f, 0.f, 1.f ); // 設定強制回應視窗的背景顏色,顏色採用的是RGBA值
glViewport( 0, 0, iScreenWidth, iScreenHeight );//設定視口的大小以及位置, 視口:也就是圖形最終顯示到螢幕的地區,前兩個參數是視口的位置,後兩個參數是視口的寬和長。
glMatrixMode( GL_PROJECTION ); // 設定矩陣模式為投影矩陣,之後的變換將影響投影矩陣。OpenGL屬於狀態管理機制,比如:設定當前矩陣為投影矩陣過後,在沒有重新調用glMatrixMode()之前,任何矩陣變換都將影響投影矩陣。
glFrustumf( -1.f, 1.f, -1.f, 1.f, 3.f, 1000.f ); //該函數建立一個透視投影矩陣,其中的參數定義了視景體,可以理解為用相機的時候,眼睛的可視範圍。就像一個三稜錐,參數1、3、5和2、4、6分別定義了近裁面和遠裁面的左下和右上的(x、y、z)座標。
OpenGL 投影有兩種模式,一種是透視投影,也就是通過上述函數建立一個三稜錐視景體,這種模式下觀看3D 模型是近大遠小。另外一種模式是正交模式,視景體是一個平行六面體,離相機的距離不會影響物體的大小。
glMatrixMode( GL_MODELVIEW ); //設定當前矩陣為模式矩陣
glVertexpointer( 3, GL_BYTE, 0, vertices ); //指定從哪裡存取空間座標資料
OpenGL 一共有8個這樣的函數可以存取不同的座標資料:
glColorPointer();
glIndexPointer();
glNormalPointer();
glTexCoordPointer();等
glShadeModel( GL_FLAT ); //設定陰影模式為GL_FLAT,預設是GL_SMOOTH陰影模式一共有兩種,GL_SMOOTH和GL_FLAT,在有關照的情況下會有不同的效果。
glClear( GL_COLOR_BUFFER_BIT ); //清除顏色緩衝
glLoadIdentity(); //設定當前矩陣為單位矩陣,調用GL10.glLoadIdentity方法後,實際上是將當前座標原點移動到了螢幕中心,而這一點正是OpenGl座標系的原點。
OpenGL裡面的位置大小都是用矩陣來表示的,比如:glScanf()放大或縮小,其實就是用一個矩陣去乘當前的矩陣,為了使變換不受當前矩陣的影響,所以把當前矩陣設定為單位矩陣。
glTranslatex(0, 0, -100 << 16 ); //將座標向z軸負方向移動100
glColor4f( 1.f, 0.f, 0.f, 1.f ); 設定顏色為紅色
/* Scale the geometry */
glScalex( 15 << 16, 15 << 16, 15 << 16 ); // 將物體沿xyz者分別放大15倍
/* Draw the triangle */
glDrawElements( GL_TRIANGLES, 1 * 3, GL_UNSIGNED_BYTE, indices ); //繪製圖形,GL_TRIANGLES說明要繪製的圖形是三角形,3表示一共有三個定點,GL_UNSIGNED_BYTE表示indices儲存的資料類型
A call to eglSwapBuffers() can then be made.
glTranslatef(GLfloat x, GLfloat y, GLfloat z)
glTranslatex(GLfixed x, GLfixed y, GLfixed z)功能:沿x、y、z平移
glScalef(GLfloat x, GLfloat y, GLfloat z)
glScalex(GLfixed x, GLfixed y, GLfixed z)功能:在x、y、z軸進行縮放,參數x、y、z為你想要的大小。
glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)功能:沿x、y、z軸進行旋轉。Angle表示將要旋轉的角度。
glClear(GLbitfield mask)功能:用mask清除緩衝可以有三種模式進行清除:GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT.
glClearDepthf(GLclampf depth)void glClearDepthx(GLclampx depth)功能:設定深度緩衝,參數為0到1,使用glClear清除緩衝。3D情境OpenGL程式都使用深度緩衝。它的排序決定那個物體先畫。這樣您就不會將一個圓形後面的正方形畫到圓形上來。
glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
glClearColorx(GLclampx red, GLclampx green, GLclampx blue,GLclampx alpha)
功能:用指定的顏色值(RGBA)清除顏色緩衝
glColorPointer(GLint size, GLenum type, GLsizei stride,const GLvoid * pointer) 功能:指定顏色的儲存空間,size在OpenGL ES預設為4,表示(RGBA);type為pointer內容的類型;stride為資料在pointer記憶體中的位移量;pointer為第一個元素的地址。
glEnableClientState(GLenum array) 功能:啟用array
glDisableClientState(GLenum array) 功能:禁止array
array有:GL_COLOR_ARRAY,
GL_MATRIX_INDEX_ARRAY_OES,
GL_NORMAL_ARRAY,
GL_POINT_SIZE_ARRAY_ARRAY_OES,
GL_TEXTURE_COORD_ARRAY,
GL_VERTEX_ARRAY,
GL_WEIGHT_ARRAY_OES。
glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices) 功能:按照參數給定的值繪製圖形,mode指定要繪製的類型:GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, and GL_TRIANGLES;count指定要繪製多少個;type指定indices為數組首地址。
glFlush();將GL命令隊列中的命令發送給顯卡並清空命令隊列,發送完立即返回(可能沒有完成命令)
glFinish() 將GL命令隊列中的命令發送給顯卡並清空命令隊列,顯卡完成這些命令後返回(完成了繪畫命令)