[英]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.