我写了一个小函数来在着色器之间切换,但不幸的是它不起作用。我创建着色器并将它们作为着色器对象返回。
program = gl.createProgram(vs, fs, "VertexPosition", "TextureCoord", "VertexNormal");
depthprogram = gl.createProgram(vs, fs, "VertexPosition", false, false);
我在更新功能中使用了开关功能,其中包括:
function Update(){
gl.switchProgram(program);
gl.Draw(Teapot, cam);
};
模型的所有缓冲区都绑定在draw函数中,(参数:模型,相机位置)
this.switchProgram = function(program){
if (this.program !== program){
this.lastprogram = this.program;
this.program = program;
gl.useProgram(this.program);
};
};
这是产生的错误:WebGL:INVALID_OPERATION:drawElements:属性设置不正确如果我评论一切正常,但我无法切换:(
depthprogram = gl.createProgram(vs, fs, "VertexPosition", false, false);
gl.switchProgram(program);