如何渲染网格(由三角形组成),其中每个三角形具有相同的颜色,而无需在顶点数组中为每个三角形指定该颜色 3 次。
假设我要绘制 2 个三角形。三角形 1:
Vertex 1, position:(x1,y1) , color: (r1,g1,b1,a1)
Vertex 2, position:(x2,y2) , color: (r1,g1,b1,a1)
Vertex 3, position:(x3,y3) , color: (r1,g1,b1,a1)
三角形 2:
Vertex 4, position:(x4,y4) , color: (r2,g2,b2,a2)
Vertex 5, position:(x5,y5) , color: (r2,g2,b2,a2)
Vertex 6, position:(x6,y6) , color: (r2,g2,b2,a2)
我知道这可以通过创建 2 个顶点缓冲区来完成:
Vertex Buffer 1:
[x1, y1]
[x2, y2]
[x3, y3]
[x4, y4]
[x5, y5]
[x6, y6]
Vertex Buffer 2:
[r1, g1, b1, a1]
[r1, g1, b1, a1]
[r1, g1, b1, a1]
[r2, g2, b2, a2]
[r2, g2, b2, a2]
[r2, g2, b2, a2]
我现在可以将它们绑定到不同的属性位置并执行通常的绘图调用。
顶点缓冲区 1 很好,因为所有数据都是唯一的,但我的问题是,顶点缓冲区 2 不是这样浪费空间吗!?如果我有数千个三角形,并且使用这种方法,我会为每个三角形复制两次颜色。必须有一种更智能的方式来存储冗余属性。我不知道。有人可以告诉吗?