3

我在开发 3D Android 应用程序时遇到了麻烦。我在回答我自己的问题时简要提到了它,但我一直无法弄清楚为什么我不能从 .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;

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

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

4

1 回答 1

5

GL_ALPHA不是glBlendFunc. 您要么想要GL_SRC_ALPHA(很可能),要么GL_DST_ALPHA.

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

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

于 2012-06-16T18:05:16.563 回答