我试图交换程序中使用的fragement-shader。片段着色器都具有相同的变量,只是不同的计算。我正在尝试为较低级别的硬件提供替代着色器。
我最终获得单色输出(而不是纹理),有没有人知道我可能做错了什么?我知道正在使用着色器,因为颜色会相应变化。
//if I don't do this:
//WebGL: INVALID_OPERATION: attachShader: shader attachment already has shader
gl.detachShader(program, _.attachedFS);
//select a random shader, all using the same parameters
attachedFS = fragmentShaders[~~(Math.qrand()*fragmentShaders.length)];
//attach the new shader
gl.attachShader(program, attachedFS);
//if I don't do this nothing happens
gl.linkProgram(program);
//if I don't add this line:
//globject.js:313 WebGL: INVALID_OPERATION: uniform2f:
//location not for current program
updateLocations();
答案 0 :(得分:1)
答案 1 :(得分:0)
我在没有结果的情况下尝试了其他一切后发现了这个问题。它还解释了为什么我看到着色器更改,但只是变得平坦的颜色。我没有更新一些属性。