【发布时间】:2017-07-10 22:00:59
【问题描述】:
我正在尝试交换程序中使用的片段着色器。片段着色器都有相同的变量,只是计算不同。我正在尝试为较低级别的硬件提供替代着色器。
我最终得到单色输出(而不是纹理),有人知道我做错了什么吗?我知道正在使用着色器,因为颜色会相应变化。
//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();
【问题讨论】:
-
您应该创建多个着色器程序,而不是更改现有着色器程序上的着色器。为您使用的每种功能组合创建着色器程序。
标签: webgl fragment-shader