[英]Transparency in texture not working in libgdx
我正在尝试在libgdx中绘制一个具有透明背景的精灵,但透明背景用白色填充而不是显示已在该位置渲染的内容。
精灵(带帽子)为64乘64,边缘和右边都有透明度。 应该有两个瓷砖'C!' 在他身后,但它只是充满了白色。
这是我用来渲染图像的代码。
public void draw(SpriteBatch sb, float parentAlpha){
sb.enableBlending();
sb.draw(texture, getX() + 32, getY());
}
如果要启用混合, 还需要使用setBlendFunction
设置混合函数 。 这准确定义了混合的工作方式。 据推测,您需要经典的GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA
混合。
所有精灵都应该混合? 也许在您绘制之后禁用混合可以解决您的问题。
也许是这样的:
public void draw(SpriteBatch sb, float parentAlpha){
sb.enableBlending();
sb.draw(texture, getX() + 32, getY());
sb.disableBlending();
}
如果这不起作用,您可以尝试使用以下方法激活GL选项中的混合:
Gdx.gl.glEnable(GL10.GL_BLEND);
Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
...
Your code Here
...
Gdx.gl.glDisable(GL10.GL_BLEND);
希望能帮助到你 :)
首先,确保您的PNG中包含透明度信息。
其次,确保你以正确的顺序绘制东西(你必须在精灵之前绘制背景框)。
我设法通过将我的应用程序更改为OpenGL 2.0而不是1.0来解决问题。 仍不确定问题是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.