【问题标题】:GLES glError 1282 when passing uniform variable to shader将统一变量传递给着色器时 GLES glError 1282
【发布时间】:2014-11-09 14:34:31
【问题描述】:

我正在使用统一变量将浮点值传递给 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 但场景绘制正确。

如果您没有发现代码有任何问题,请提供有关如何调试的任何提示。

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    经过大量挠头后,结果与此故障的原因相同: GLSL Shader will not render color from uniform variable 我在其他着色器中重用 mvpMatrix 制服。在引入这种额外的制服之前,这并没有产生错误。 我发现的唯一线索是直到调用下一个着色器才发生错误,当时我并没有太在意,但它应该是一个线索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 2011-03-14
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      相关资源
      最近更新 更多