WebGL立方体中的三角形



在这个教程中,作者通过定义它的6个面(6*4个顶点),然后告诉webgl每个面有三角形来显示一个立方体。

这不是浪费吗?如果只定义8个顶点,然后告诉webgl如何连接它们来得到三角形,不是更好吗?多个顶点共享颜色是一个问题吗?

让我的担忧明显:如果作者定义三角形与索引数组,为什么他需要这么多顶点?他可以在顶点数组中指定所有只有8个顶点的三角形

这个例子的作者。正如你所怀疑的,这个问题与立方体的颜色有关。

理解这类代码最简单的方法是把WebGL的"顶点"想象成不仅仅是空间中的简单点,而是一束属性。一个特定的顶点可能是束<(1, -1, 1), red>。一个不同的顶点,它位于空间的同一点,但具有不同的颜色(例如。对于WebGL来说,<(1, -1, 1), green>)将是一个完全不同的顶点。

因此,当一个立方体在空间点的数学意义上只有8个顶点时,如果你想让每个面有不同的颜色,每个点必须由三个不同的顶点占据,每种颜色一个——这使得8x3=24个顶点在WebGL意义上。

它在内存方面不是非常高效,但是与CPU功率相比,内存是便宜的,更规范化的表示需要有效的处理。

希望能把事情说清楚。

可以使用顶点缓冲对象(VBO)。请看这个例子。它们创建了一个顶点列表和一个"指向"顶点的索引列表(顶点不重复)。

最新更新