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张图片

Demo 地址: 打开
密码:rl8w

下一篇文章将讲解图形的变换。

你可能感兴趣的:(Android,OpenGL,ES,Android,OpenGL,ES学习笔记)