【问题标题】:Why would transparency not work in LibGdx on Android 2.3.5?为什么透明度在 Android 2.3.5 上的 LibGdx 中不起作用?
【发布时间】:2012-06-16 13:38:26
【问题描述】:

我在使用 LibGdx 开发 3D Android 应用程序时遇到了麻烦。我在回答 to my own question 中简要提到了它,但我一直无法弄清楚为什么我无法从 .png 图像中获得透明度。

纹理是透明的,我在 windows 上检查了我的 OpenGL3+ 框架,它们在正确的部分显示为透明的。

我的(简单占位符)片段着色器代码以:

结尾
vec4 finalColor = ambient + diffuse;
finalColor.a = colorMap.a;
gl_FragColor = finalColor;

我试过 finalColor.a = 0.1; 还是不行。

我已将此添加到我的代码中,但无济于事:

Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);      
Gdx.gl20.glBlendFunc(GL20.GL_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl20.glEnable(GL20.GL_BLEND);

我什至检查并更改了:

AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.r = cfg.g = cfg.b = cfg.a = 8;

我认为这是每个通道的位数。

对此的任何帮助将不胜感激,我只是希望我没有忽略任何事情。 这不是一个大问题,我或多或少可以在没有透明度的情况下完成我的项目,但我真的很想知道为什么我不能让它工作。

【问题讨论】:

    标签: android opengl-es-2.0 textures libgdx alpha-transparency


    【解决方案1】:

    GL_ALPHA 不是glBlendFunc 的合法选项。你要么想要GL_SRC_ALPHA(很可能),要么想要GL_DST_ALPHA

    glGetError 在这里对你有帮助,你应该开始使用它!

    http://www.khronos.org/opengles/documentation/opengles1_0/html/glBlendFunc.html

    【讨论】:

    • 非常感谢!更改为 GL_SRC_ALPHA 并按预期工作,我不敢相信我忽略了这一点。我会尝试更频繁地使用glGetError
    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 2011-10-02
    • 2019-09-19
    • 2013-01-06
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多