繁体   English   中英

纹理中的透明度在libgdx中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM