前言
之前一篇文章讲了如何绘制点,所谓两点成线,三点成面。一个立体图形就是由很多面组成,在OpenGL ES中,面特指一个三角形。
绘制调用glDrawArrays(int mode, int first, int count)方法
mode的参数可以选择
- GL_POINTS ————绘制独立的点
- GL_LINE_STRIP————绘制连续的线段,不封闭
- GL_LINE_LOOP————绘制连续的线段,封闭
- GL_LINES————顶点两两连接,为多条线段构成
- GL_TRIANGLES————每隔三个顶点构成一个三角形
- GL_TRIANGLE_STRIP————每相邻三个顶点组成一个三角形
- GL_TRIANGLE_FAN————以一个点为三角形公共顶点,组成一系列相邻的三角形
例子
我设置一个顶点数组如下
//顶点数组
private float[] mArray = {
-0.6f , 0.6f , 0f,
-0.2f , 0f , 0f ,
0.2f , 0.6f , 0f ,
0.6f , 0f , 0f
};
指定绘制模式为GL_POINTS
gl.glDrawArrays(GL10.GL_POINTS, 0, 4);
效果图
指定绘制模式为GL_LINE_STRIP
gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, 4);
效果图
指定绘制模式为GL_LINE_LOOP
gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, 4);
效果图
指定绘制模式为GL_LINES
gl.glDrawArrays(GL10.GL_LINES, 0, 4);
效果图
指定绘制模式为GL_TRIANGLES
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 4);
效果图,PS:当顶点个数不足以绘制第二个三角形时,就忽略
指定绘制模式为GL_TRIANGLE_STRIP
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
效果图,我用虚线隔开了,它本身是两个相邻三角形组成
指定绘制模式为GL_TRIANGLE_FAN
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
效果图,我用虚线隔开了,它本身以第一个顶点为公共点,绘制了相邻的三角形
Demo 地址: 打开
密码:rl8w
下一篇文章将讲解图形的变换。