我使用统一变量将浮点值传递到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,但场景绘制正确。
如果您无法发现代码有任何问题,我们将不胜感激任何有关如何调试的提示。
答案 0 :(得分:1)
经过大量的搔痒后,原因与此故障原因相同: GLSL Shader will not render color from uniform variable 我正在重复使用其他着色器的mvpMatrix制服。在引入这种额外的制服之前,这不会产生错误。 我只知道我发现这个错误在下一个着色器被调用之前没有发生,我当时并没有太注意这个但它应该是一个线索。