java - libGDX 将 Sprite 中的颜色设置为透明

标签 java android libgdx sprite

我正在从 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/

相关文章:

java - Libgdx 与 Java Swing 问题

java - DeltaTime 未正确更新?

java - Tomcat 关机 : The process cannot access the file

java - 在 openCV 中调整图像大小不起作用

java - onActivityResult 返回数据 = null

android - gethitRect() ,我做错了,这是如何工作的?

java - Android 上的 Fragment 膨胀问题

java - 我的程序无法绘制/渲染它所需要的内容

java - 从其他网站抓取数据

java - Java-8 中 Stream 的循环融合(内部工作原理)