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

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

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

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

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,可以通过按钮切换:

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

感谢阅读!

转载于:https://juejin.im/post/5cbb1787e51d456e46603e2d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值