我试图在我的片段着色器中设置两个纹理,但如果我尝试设置相应的统一变量,则会出现此错误:
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…
。
如果你正在使用多个着色器程序,请确保在尝试设置统一值之前选择正确的着色器。请注意,制服是特定于程序的,它们被程序记住了,所以你不必每次切换程序时都重新设置它们!