一、2D制图。
1.构建opengl es 的基本开发框架
回调android.opengl.GLSurfaceView.Renderer.
在Renderer借口中定义如下3个方法。
void onSurfaceCreated(GL10 gl, EGLConfig config) //创建或者被重建的时候调用,设置初始化功能。
void onDrawFrame(GL10 gl) //绘制每一帧时调用,类似View中的onDraw方法。在该方法中绘制2D或3D图形。
void onSurfaceChanged(GL10 gl, int width, int height)//界面(主视图)发生改变时调用,不管窗口尺寸是否发生变化,在程序开始的时候至少执行一次。
Opengl 的坐标系。
opengl的坐标是三维的,所以三个点确定一个坐标。
onDrawFrame方法里的glTranslatef方法,是将坐标的中心原点沿xyz的方向移动。
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);//允许设置顶点。
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);//设置顶点。
gl.glVertexPointer(坐标的维数, 定点的类型, 步长,顶点缓存);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);//绘制图形。
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);//在开启顶点设置功能后,必须使用该代码,关闭顶点设置功能。
2.颜色:
其中颜色分为:Smooth Color (平滑颜色),Flat Clolr(单色调颜色)
先说简单的Flat Color颜色把。
在使用单色调之前,必须关闭颜色渲染功能,要不然不起作用。
直接调用方法glColor4f(red,gree,blue,alpha)方法。
在来说说相对复杂的平滑颜色
在使用平滑颜色时需要开启颜色渲染功能。
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
然后通过glColorPointer方法可以进行平滑着色。
gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuffer);和glVertexPointer方法的参数相似。
其中第一个数字4表示每一个颜色的值的数目(R,G,B.A)
最后需要对颜色渲染功能进行关闭。
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
3.旋转
旋转的方法是void glRotatef(float angle,float x,float y,float z)
其中angle表示选择的角度,后边的x,y,z意思是,按照那个点去旋转。
最后需要在onDrawFrame方法的最好不断变化rotate变量,才能保存选择,
rotate+=1;