将统一变量传递给着色器时GLES glError 1282

时间:2014-09-15 23:55:31

标签: android opengl-es

我使用统一变量将浮点值传递到GLES着色器,但我的代码一直生成1282错误。我在这里跟着几个例子,我很确定我正在做的一切正确。你能发现我的代码有什么问题吗?我正在使用Nexus 7在Android 4.4.2上进行测试

我在onDrawFrame中使用它:

    GLES20.glUseProgram(mProgram);
    int aMyUniform = GLES20.glGetUniformLocation(mProgram, "myUniform");
    glVar = frameNumber/100f;
    GLES20.glUniform1f(aMyUniform, glVar);
    System.out.println("aMyUniform = " + aMyUniform);   //diagnostic check

这位于片段着色器的顶部:

    "uniform float myUniform;\n" + 

这在片段着色器的主程序中:

    "gl_FragColor[2] = myUniform;\n" +

变量myUniform不会出现在顶点着色器中。

为aMyUniform报告的值为0,表示已正确找到制服。如果我更改片段着色器以删除对myUniform的引用并将其替换为硬编码值,则一切都按预期工作; aMyUniform返回值-1,但场景绘制正确。

如果您无法发现代码有任何问题,我们将不胜感激任何有关如何调试的提示。

1 个答案:

答案 0 :(得分:1)

经过大量的搔痒后,原因与此故障原因相同: GLSL Shader will not render color from uniform variable 我正在重复使用其他着色器的mvpMatrix制服。在引入这种额外的制服之前,这不会产生错误。 我只知道我发现这个错误在下一个着色器被调用之前没有发生,我当时并没有太注意这个但它应该是一个线索。