【发布时间】: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 但场景绘制正确。
如果您没有发现代码有任何问题,请提供有关如何调试的任何提示。
【问题讨论】: