在 OpenGL ES 中,是否可以使用退化三角形(面积为 0 的三角形)来分隔顶点数组中的 TRIANGLE_FAN 对象?还是只有 TRIANGLE_STRIP 才能做到这一点?
如果答案是否定的,将多个 TRIANGLE_FAN 顶点数组绘制调用批处理为一个的最佳方法是什么?
在 OpenGL ES 中,是否可以使用退化三角形(面积为 0 的三角形)来分隔顶点数组中的 TRIANGLE_FAN 对象?还是只有 TRIANGLE_STRIP 才能做到这一点?
如果答案是否定的,将多个 TRIANGLE_FAN 顶点数组绘制调用批处理为一个的最佳方法是什么?
你是对的,答案是否定的,因为所有三角形扇形三角形共享相同的顶点。
如果您想批量处理多个三角形风扇,最好使用顶点缓冲区对象GL_TRIANGLES
或带模式的 VBO 。会有一个小的索引缓冲区开销,但它会提供更好的灵活性。
您还可以将您的表面三角测量为条带而不是扇形。它将允许您使用退化三角形并将您的绘制调用批处理为一个。
如果您的表面是 n 边形,这很容易。只需更改顶点创建的顺序。与其绕着中心走,不如选择一个顶点开始并通过在两侧迭代来生成其他顶点。这是一个Hexagon的例子。左图使用三角条,中图使用扇形。