我有一个片段着色器:
uniform vec4 zz_color;
void main(void) {
gl_FragColor = zz_color;
}
我在JS代码中设置了这个颜色:
ccc = gl.getUniformLocation(this.program, "zz_color"); // 1 time
gl.uniform4f(ccc, r, g, b, 1); // on animation frame
但是我使用100000个三角形绘制了50000个矩形:
gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.my_vertices_data);
gl.drawArrays(gl.TRIANGLES, 0, 6 * number_of_vertices);
并希望每个人都有自己的颜色。
我的问题是:片段着色器如何(可以吗?)获得当前片段的某种索引(着色器在NOW上工作)能够从某个数组中获取颜色(该数组将包含每个片段的颜色)?
(100000个片段(三角形)内存太多,无法在着色器代码中使用数组,但是100个片段呢?)
答案 0 :(得分:1)
向GPU发送附加属性,三角形的颜色。然后顶点着色器将其作为变化发送到片段着色器。 Webgl不允许在片段着色器中进行动态索引。