OpenGL实际上是如何读取索引的?

How does OpenGL actually read indices?

我试图弄清楚如何使用 triangle_strips 绘制平坦地形,当我编写用于创建索引数组的循环时,我想 OpenGL 如何知道解析索引,因为到目前为止我已经看到每个人在创建索引时都这样写:

0 3 1 4 2 5 0xFFFF 3 6 4 7 5 8

(这里是标记片段结束的 0xFFFF 原始重启)

所以从技术上讲,据我所知,这应该用每个三角形的偏移量 +1 来解析......所以第一个三角形将使用前三个索引 (0 3 1),下一个使用偏移量 +1 (3 1 4 )...下一个 (1 4 2) 等等。这是图片,以防我解释得不好:

但我看到的另一种方式是分别为每个三角形创建索引....因此: 0 3 1 3 1 4 1 4 2 4 2 5

所以我的问题是如何指定布局...当我将绘制调用设置为 GL_TRIANGLE_STRIP 时,OpenGL 会自动执行此操作吗?

三角形图元一共有三种:

  • GL_TRIANGLES:顶点0、1、2构成一个三角形。顶点 3、4 和 5 形成一个三角形。依此类推

  • GL_TRIANGLE_STRIP:每组3个相邻的顶点组成一个三角形。一个长度为 n 的顶点流将生成 n-2 个三角形。

  • GL_TRIANGLE_FAN:第一个顶点始终保持固定。从那里开始,每组 2 个相邻顶点与第一个顶点形成一个三角形。因此,对于顶点流,您会得到一个三角形列表,如下所示:(0, 1, 2) (0, 2, 3), (0, 3, 4),等等。长度为 n 的顶点流将生成 n- 2 个三角形。

您的第一个场景描述了 GL_TRIANGLE_STRIP,而您的第二个场景描述了 GL_TRIANGLES