gpt4 book ai didi

android - 将统一变量传递给着色器时出现 GLES glError 1282

转载 作者:行者123 更新时间:2023-11-30 02:40:18 26 4
gpt4 key购买 nike

我正在使用统一变量将浮点值传递到 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

这是在 fragment 着色器的顶部:

    "uniform float myUniform;\n" + 

这在 fragment 着色器的主程序中:

    "gl_FragColor[2] = myUniform;\n" +

变量 myUniform 没有出现在顶点着色器中。

aMyUniform 的报告值为 0,这表明已正确找到制服。如果我更改 fragment 着色器以删除对 myUniform 的引用并将其替换为硬编码值,一切都会按预期工作; aMyUniform 返回值 -1 但场景绘制正确。

如果您无法发现代码中的任何错误,我们将不胜感激有关如何调试它的任何提示。

最佳答案

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

关于android - 将统一变量传递给着色器时出现 GLES glError 1282,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com