我正在从 spritesheet 向屏幕绘制 sprite。 Sprite 有黑色背景。如果可能的话,我希望黑色,而且只有黑色,被渲染成透明的。所以,假设我有一个红色背景。然后我有一个带有黑色背景的蓝色圆圈的 Sprite 。当我将它绘制到屏幕上时,我只希望蓝色圆圈(显然还有红色背景)可见。这是我当前项目的代码。帮助非常感谢!
public void render(float delta) {
Gdx.gl.glClearColor(1f, 1f, 1f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
batch.enableBlending();
camera.update();
generalUpdate();
batch.begin();
// Rendering Code
Assets.sprite_moon.draw(batch);
if (Assets.accelerated) {
Assets.sprite_flame.draw(batch);
}
Assets.sprite_rocket.draw(batch);
Assets.sprite_blue.draw(batch);
// End render code
batch.end();
batch.disableBlending();
}
最佳答案
您正在寻找“色度键”或“颜色键”支持(并且您希望黑色作为您的“色度颜色”)。一般来说,这不是 libgdx 支持的东西。参见 Removing a Sprites Color Key libGDX
但是,大多数工具(和 Libgdx)都支持“alpha channel ”,这是一种指定任何像素透明度的方式,与其颜色无关。您应该能够在生成图像时设置透明度,甚至在将图像打包到 spritesheet 中时。或者您可以自己对图像构建预处理 channel 。参见 How do you tell libgdx to use a specific color for transparency?
如果您真的想采用色度键方法,您可以尝试使用自定义着色器,但我会避免这种方法,除非您有充分的理由使用着色器。
关于java - libGDX 将 Sprite 中的颜色设置为透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29403164/