Android OpenGL ES - 绘制线、面

前言

之前一篇文章讲了如何绘制点,所谓两点成线,三点成面。一个立体图形就是由很多面组成,在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);

效果图


Android OpenGL ES - 绘制线、面_第1张图片
这里写图片描述

指定绘制模式为GL_LINE_STRIP

gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, 4);

效果图


Android OpenGL ES - 绘制线、面_第2张图片
这里写图片描述

指定绘制模式为GL_LINE_LOOP

gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, 4);

效果图


Android OpenGL ES - 绘制线、面_第3张图片
这里写图片描述

指定绘制模式为GL_LINES

gl.glDrawArrays(GL10.GL_LINES, 0, 4);

效果图


Android OpenGL ES - 绘制线、面_第4张图片
这里写图片描述

指定绘制模式为GL_TRIANGLES

gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 4);

效果图,PS:当顶点个数不足以绘制第二个三角形时,就忽略


Android OpenGL ES - 绘制线、面_第5张图片
这里写图片描述

指定绘制模式为GL_TRIANGLE_STRIP

gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);

效果图,我用虚线隔开了,它本身是两个相邻三角形组成


Android OpenGL ES - 绘制线、面_第6张图片
这里写图片描述

指定绘制模式为GL_TRIANGLE_FAN

gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);

效果图,我用虚线隔开了,它本身以第一个顶点为公共点,绘制了相邻的三角形


Android OpenGL ES - 绘制线、面_第7张图片
这里写图片描述

你可能感兴趣的:(Android OpenGL ES - 绘制线、面)