android學習筆記之3D–(02)-OPenGL ES常用API

來源:互聯網
上載者:User

 

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命令隊列中的命令發送給顯卡並清空命令隊列,顯卡完成這些命令後返回(完成了繪畫命令)

相關文章

聯繫我們

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