Opengl es “断开2垂直”开关;“行”;带GLU三角带

Opengl es “断开2垂直”开关;“行”;带GLU三角带,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,仅使用一组为GL_三角形_带格式化的数组缓冲区数据就可以分离/断开线。基本上,在二维正交投影中,我有一组垂直线在视口中隔开。每条线是2个三角形(因此三角形条带有4个顶点)。有一条对角线连接到下一条线,这是不可取的 我是否坚持要更改为GL_三角形或将条带分离为单独的阵列?在更高版本的OpenGL(ES 3.0或任何最新版本的完整OpenGL)中,您有几个选项: 原语重启。要使用此功能,请调用(在ES 3.0中): 然后在索引序列中要启动新原语的任何点处,使用索引格式的最高可能索引(例如,0xfff

仅使用一组为GL_三角形_带格式化的数组缓冲区数据就可以分离/断开线。基本上,在二维正交投影中,我有一组垂直线在视口中隔开。每条线是2个三角形(因此三角形条带有4个顶点)。有一条对角线连接到下一条线,这是不可取的


我是否坚持要更改为GL_三角形或将条带分离为单独的阵列?

在更高版本的OpenGL(ES 3.0或任何最新版本的完整OpenGL)中,您有几个选项:

  • 原语重启。要使用此功能,请调用(在ES 3.0中):

    然后在索引序列中要启动新原语的任何点处,使用索引格式的最高可能索引(例如,
    0xffff
    用于
    GL\u UNSIGNED\u SHORT

  • 使用实例化渲染或来自
    glMultiDraw*()
    族的调用,通过单个绘制调用渲染多个基本体

  • 重复索引

  • 最后一个是ES 2.0中唯一的实物期权,因此我将对其进行详细说明。虽然这种方法看起来有点脏(对我来说是…),但它已经被使用了很长时间,实际上是完全安全的。其思想是重复顶点以将“分离”的基本体与退化三角形连接起来,退化三角形不绘制任何像素,因为它们的两个顶点相同

    要使这项工作正常,您需要重复一个基本体的最后一个索引,以及下一个基本体的第一个索引。假设有两个三角形带,每个带4个顶点,具有以下索引:

    i1 i2 i3 i4
    i5 i6 i7 i8
    
    如果要将其绘制为单个三角形条带,则索引顺序为:

    i1 i2 i3 i4 i4 i5 i5 i6 i7 i8
    

    注意如何重复
    i4
    (第一个原始原语的最后一个索引)和
    i5
    (第二个原始原语的第一个索引)。这允许生成连接两个原始图元的不可见退化三角形。

    。虽然如果它只有两个三角形,你也可以使用规则三角形而不是条带。应该指定。OpenGLES2在iOS上。对于OES2来说,原语重启似乎并不存在:(谢谢,我看过关于退化原语的东西,但不确定到底要重复什么。你的解释澄清了这一点,我让它开始工作了!
    i1 i2 i3 i4 i4 i5 i5 i6 i7 i8