google chrome - WebGL: INVALID_OPERATION: uniform1i:位置不适合当前程



我试图在我的片段着色器中设置两个纹理,但如果我尝试设置相应的统一变量,则会出现此错误:

gl.uniform1i(getUniformLocation(program, "uTextureOne"), 0);gl.uniform1i(getUniformLocation(program, "uTextureTwo"), 1);

这是什么意思?(我用的是Chrome)

我的着色器看起来像这样:

        "#ifdef GL_ES                       rn" +
        "precision mediump float;           rn" + 
        "#endif                             rn" +
        "uniform sampler2D uTextureOne;     rn" +
        "uniform sampler2D uTextureTwo;     rn" +
        "varying vec3 vOrgNormal;           rn" +
        "void main(void) {                  rn" +

" Location not for current program "表示活动着色器程序(gl.useProgram)不是您从中获得统一位置的程序。

如果你只使用一个着色器程序,然后简单地确保在你的初始化你做gl.useProgram之前,你做任何gl.uniform…

如果你正在使用多个着色器程序,请确保在尝试设置统一值之前选择正确的着色器。请注意,制服是特定于程序的,它们被程序记住了,所以你不必每次切换程序时都重新设置它们!

最新更新