繁体   English   中英

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

[英]GLES glError 1282 when passing uniform variable to shader

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

如果您无法在代码中发现任何错误,则将对如何进行调试提供任何提示。

经过大量的头部刮擦之后,这实际上是与该故障相同的原因: GLSL Shader无法通过统一变量渲染颜色,我在其他着色器之间重复使用mvpMatrix统一。 直到引入了这个额外的制服,这才产生错误。 我唯一发现的线索是直到调用下一个着色器才发生错误,当时我并没有对此特别注意,但这应该是一个线索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM