WebGL - 通过着色器中的数组循环

时间:2018-01-03 14:30:50

标签: javascript webgl

我想知道我应该如何从着色器循环遍历数组。 我读了很多东西,但我还是很困惑。

以下是创建数组的JavaScript:

var particles = []; // I'm creating an array of x and y coordinates
for (var i = 0; i < 100; i++) {
    particles.push([
            Math.floor(Math.random()*1000) + .5, 
            Math.floor(Math.random()*1000) + .5
        ]);
}
gl.uniform2fv(gl.getUniformLocation(glProgram, 'particles'), particles);

这是我片段着色器的一部分:

uniform vec2 particles;

void main( void ) {
    bool found = false;
    for (int i = 0; i < 100; i ++) {
        if (particles[i].x == 1.0) {
            found = true;
        }
    }
}

我得到的错误是&#34; 字段选择需要左侧的结构或向量&#34;。 我错过了什么?

1 个答案:

答案 0 :(得分:1)

着色器中particles的声明不正确,它定义了一个vec2而不是vec2的数组。

正确的声明是:

uniform vec2 particles[100];