如果我想使用没有多个绘制调用的三角形绘制红色和蓝色方块,据我所知,它是形状顶点的12个元素(有意义),但我还需要使用12个只有两种颜色的元素,因为我需要为每个顶点定义一个颜色,这个颜色指数多余,我用于形状的顶点越多。
有没有办法,比方说,跳过一个属性多次,以便这些排队
vertices = [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1
1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2]
colors = [1, 0, 0, 1,
0, 0, 1, 1]
因此第一种颜色(颜色中的第一个vec4)适用于顶点中的前六个点,第二个颜色适用于接下来的六个点。
这是可能的还是我必须为形状中的每个顶点重新定义相同的颜色?
答案 0 :(得分:0)
你所追求的东西是绘制实例:http://blog.tojicode.com/2013/07/webgl-instancing-with.html。
否则,如果你真的热衷于不复制顶点,你可以使用制服:
uploadAttrDataForOneShape();
setUniform("color", RED);
draw();
setUniform("color", BLUE);
draw();
实际上,GPU上的内存非常丰富,而且对顶点冗余进行过多的压力可能是不值得的。