WebGL:在着色器之间切换
我编写了一个在着色器之间切换的小函数,但不幸的是它不起作用。 我创建着色器并将其作为着色器对象返回WebGL:在着色器之间切换,webgl,shader,Webgl,Shader,我编写了一个在着色器之间切换的小函数,但不幸的是它不起作用。 我创建着色器并将其作为着色器对象返回 program=gl.createProgram(vs,fs,“顶点显示”、“纹理命令”、“顶点法线”) depthprogram=gl.createProgram(vs,fs,“VertexPosition”,false,false) 我在更新功能中使用开关功能,包括: function Update(){ gl.switchProgram(program);
function Update(){
gl.switchProgram(program);
gl.Draw(Teapot, cam);
};
在绘图功能中绑定模型的所有缓冲区(参数:模型、相机位置)
以下是导致的错误:WebGL:无效的\u操作:抽屉元素:属性未正确设置
如果我发表评论,一切正常,但我无法切换:(
两个着色器是否使用相同的属性? 据我从您的代码得出的结论,第一个着色器使用:
attribute vertexPos;
attribute vertexNormal;
attribute textureCoord;
而第二只会用
attribute vertexPos;
如果尝试发送程序的顶点着色器中未使用的属性,或者未发送顶点着色器请求的属性,则会收到警告。
我想说的是,虽然第一个着色器需要vertexNormal和TextureOrd,但您不发送它们
希望这有帮助
attribute vertexPos;
attribute vertexNormal;
attribute textureCoord;
attribute vertexPos;