一、2D制圖。?
1.構(gòu)建opengl es 的基本開發(fā)框架
回調(diào)android.opengl.GLSurfaceView.Renderer.
在Renderer借口中定義如下3個(gè)方法。
void onSurfaceCreated(GL10 gl, EGLConfig config) //創(chuàng)建或者被重建的時(shí)候調(diào)用,設(shè)置初始化功能。
void?onDrawFrame(GL10 gl) //繪制每一幀時(shí)調(diào)用,類似View中的onDraw方法。在該方法中繪制2D或3D圖形。
?void onSurfaceChanged(GL10 gl, int width, int height)//界面(主視圖)發(fā)生改變時(shí)調(diào)用,不管窗口尺寸是否發(fā)生變化,在程序開始的時(shí)候至少執(zhí)行一次。
Opengl 的坐標(biāo)系。
opengl的坐標(biāo)是三維的,所以三個(gè)點(diǎn)確定一個(gè)坐標(biāo)。
onDrawFrame方法里的glTranslatef方法,是將坐標(biāo)的中心原點(diǎn)沿xyz的方向移動(dòng)。
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);//允許設(shè)置頂點(diǎn)。
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);//設(shè)置頂點(diǎn)。
gl.glVertexPointer(坐標(biāo)的維數(shù), 定點(diǎn)的類型, 步長,頂點(diǎn)緩存);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);//繪制圖形。
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);//在開啟頂點(diǎn)設(shè)置功能后,必須使用該代碼,關(guān)閉頂點(diǎn)設(shè)置功能。
?
2.顏色:
其中顏色分為:Smooth Color (平滑顏色),F(xiàn)lat Clolr(單色調(diào)顏色)
先說簡單的Flat Color顏色把。
在使用單色調(diào)之前,必須關(guān)閉顏色渲染功能,要不然不起作用。
直接調(diào)用方法glColor4f(red,gree,blue,alpha)方法。
在來說說相對(duì)復(fù)雜的平滑顏色
在使用平滑顏色時(shí)需要開啟顏色渲染功能。
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
然后通過glColorPointer方法可以進(jìn)行平滑著色。
gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer);和glVertexPointer方法的參數(shù)相似。
其中第一個(gè)數(shù)字4表示每一個(gè)顏色的值的數(shù)目(R,G,B.A)
最后需要對(duì)顏色渲染功能進(jìn)行關(guān)閉。
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
?
3.旋轉(zhuǎn)
旋轉(zhuǎn)的方法是void glRotatef(float angle,float x,float y,float z)
其中angle表示選擇的角度,后邊的x,y,z意思是,按照那個(gè)點(diǎn)去旋轉(zhuǎn)。
最后需要在onDrawFrame方法的最好不斷變化rotate變量,才能保存選擇,
rotate+=1;
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
