Android OpenGL ES 2.0 手把手教学(5)- 绘制模式

栏目: IOS · Android · 发布时间: 5年前

内容简介:大家好,下面和大学一起学习绘制模式,在我的github上有一个项目在我们之前的例子中,我们都是以三个独立顶点为一个三角形的方式来进行渲染,如果大家有注意观察的话,会发现我们在调用这张图展示了这三种绘制模式的区别

大家好,下面和大学一起学习绘制模式,在我的github上有一个项目 OpenGLES2.0SamplesForAndroid ,我会不断地编写学习样例,文章和代码同步更新,欢迎关注,链接: github.com/kenneycode/…

在我们之前的例子中,我们都是以三个独立顶点为一个三角形的方式来进行渲染,如果大家有注意观察的话,会发现我们在调用 glDrawArrays() 方法的时候,第一个参数都是用 GL_TRIANGLES ,这第一个参数就是用来设置绘制模式的,下面给大家介绍三个比较常用的绘制模式 GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN ,我们先来看一张图:

Android OpenGL ES 2.0 手把手教学(5)- 绘制模式

这张图展示了这三种绘制模式的区别

GL_TRIANGLES 就是我们之前的例子中一直在用的,它是将每三个独立顶点构成一个三角形,不同三角形之间不会共用顶点

GL_TRIANGLE_STRIP 的效果就像它名字一样,是带状的,它构成三角的规则和顶点数量的奇偶有关,如果顶点数量是奇数,则三角形为 k, k+1, k+2 , 如果顶点数量是偶数,则三角形为 k, k+2, k+1 ,这是什么意思呢?我们对照上图来看,假如顶点数量是5,那么就是 (v0, v1, v2)、(v1, v2, v3)、(v2, v3, v4) 三个三角形,假如顶点数量是4,那么就是 (v0, v2, v1)、(v1, v3, v2) 两个三角形,可以看它三角形顶点是会共用的。

GL_TRIANGLE_FAN 的效果也像它名字一样,一扇形的,以第0个点为扇形的中心,其它点就连接0号点与上一个点构成三角形。

这三种绘制模式各有特点,可根据实际需要来采用,在能满足需求的情况下,尽量采用传递顶点少的方式,可以提高性能,例如我们之前的例子中,是否能用 GL_TRIANGLE_STRIP 或者 GL_TRIANGLE_FAN 来替代,减少传递的顶点呢?大家可以思考一下。

我们来看看例子中的效果,从左到右依次是 GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN ,可以通过按钮切换:

Android OpenGL ES 2.0 手把手教学(5)- 绘制模式

代码在我github的 OpenGLES2.0SamplesForAndroid 项目中,本文对应的是 SampleDrawMode ,项目链接: github.com/kenneycode/…

感谢阅读!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Open Data Structures

Open Data Structures

Pat Morin / AU Press / 2013-6 / USD 29.66

Offered as an introduction to the field of data structures and algorithms, Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues......一起来看看 《Open Data Structures》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具