GL_TRIANGLE_FAN,GL_TRIANGLE_STRIP和GL_TRIANGLES的区别是什么

GL_TRIANGLE_FAN、GL_TRIANGLE_STRIP和GL_TRIANGLES是OpenGL中用于绘制三角形的三种不同方式,它们各自有不同的特点和适用场景。以下是这三种绘制方式的详细区别:

一、GL_TRIANGLES三角形

  • 定义:以每三个顶点绘制一个独立的三角形。
  • 顶点使用:第一个三角形使用顶点v0、v1、v2,第二个使用v3、v4、v5,以此类推。
  • 顶点数量要求:如果顶点的个数n不是3的倍数,那么最后的1个或者2个顶点会被忽略。
  • 适用场景:适用于需要绘制多个独立三角形且三角形之间不共享顶点的场景。

二、GL_TRIANGLE_STRIP三角形带

  • 定义:绘制一组相连的三角形,三角形的构建依赖于顶点的序号和奇偶性。
    • 如果当前顶点是奇数,组成三角形的顶点排列顺序为[n-1, n-2, n]。
    • 如果当前顶点是偶数,组成三角形的顶点排列顺序为[n-2, n-1, n]。
  • 顶点使用:第一个三角形由顶点v0、v1、v2组成(假设v2为偶数顶点),第二个三角形由顶点v1、v2、v3组成(v3为奇数顶点),以此类推。
  • 顶点数量要求:顶点个数n至少要大于3,否则不能绘制任何三角形。
  • 适用场景:适用于需要绘制一系列相连的三角形且希望三角形之间共享顶点的场景,可以减少顶点传递次数,提高性能。

三、GL_TRIANGLE_FAN三角形扇

  • 定义:绘制一组相连的三角形,所有三角形共用一个起始顶点。
  • 顶点使用:以v0为起始点,第一个三角形由顶点v0、v1、v2组成,第二个三角形由顶点v0、v2、v3组成,以此类推。
  • 顶点数量要求:与GL_TRIANGLES类似,如果顶点数量不是足够形成完整的三角形序列,则最后的顶点可能会被忽略。
  • 适用场景:适用于需要绘制以某个顶点为中心的扇形三角形序列的场景。

四、总结

  • 独立性:GL_TRIANGLES绘制的三角形是独立的,不共享顶点;而GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN绘制的三角形是相连的,可以共享顶点。
  • 顶点使用方式:GL_TRIANGLES按每三个顶点一组使用;GL_TRIANGLE_STRIP根据顶点的奇偶性决定三角形的顶点组合;GL_TRIANGLE_FAN则是以一个顶点为中心,与其他顶点组合形成三角形。
  • 适用场景:根据具体需求选择合适的绘制方式,可以在满足需求的情况下提高性能。

综上所述,GL_TRIANGLE_FAN、GL_TRIANGLE_STRIP和GL_TRIANGLES在OpenGL中各有其特点和适用场景,开发者可以根据具体需求选择合适的绘制方式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲暇部落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值