【发布时间】:2013-02-01 07:31:05
【问题描述】:
我开始接触 WebGL,我想知道是否有一个了解错误输出的好地方。
我不断收到以下错误
WebGL: INVALID_VALUE: attachShader: no object or object deleted localhost:1
WebGL: INVALID_OPERATION: getAttribLocation: program not linked localhost:1
WebGL: INVALID_OPERATION: getUniformLocation: program not linked localhost:1
WebGL: INVALID_OPERATION: useProgram: program not valid localhost:1
WebGL: INVALID_OPERATION: drawElements: attribs not setup correctly
所以,我可以从这些错误中看出我的着色器无法正常工作
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
随后的错误是关于没有程序。
所以我的问题是:如何找出我的代码出了什么问题?
程序没有以某种方式定义,我确实有var program = gl.createProgram();。那么,为什么会发生这种情况?我在哪里看?我猜这是因为我的着色器无法编译,但据我所知,我的着色器有 0 个错误或警告。它被上述代码/警告混淆了......此外,chrome提到了这些警告,而firefox没有。两者都不能初始化着色器
【问题讨论】:
-
您是否检查过您的着色器是否已编译?致电
gl.compileShader后,请致电gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)。如果返回 false,则您的着色器中存在错误,这可能会阻止 WebGL 继续设置您的程序。 -
是的,着色器正在编译。虽然它没有链接
标签: javascript opengl-es webgl shader vertex-shader