更改纹理的颜色

Change the color of a texture

是否可以将纹理的颜色更改为随机颜色?如果可能,我该怎么做? 我认为另一种方法是用不同颜色的对象创建一个精灵 sheet 并随机更改区域,但我不确定。

如果您有白色纹理,则只需更改 spritebatch 颜色即可为图像着色。

batch.setColor(new Color(r,g,b,a));
batch.draw(texture, x, y);
batch.setColor(new Color(1,1,1,1)); // reset to default colour

您无法更改 Texture 的颜色,因为它在 GPU 内存中。由于它们在 OpenGL 上下文中,因此您不能随时直接修改它们的像素。您可以使用 Pixmap 这是一个保存在本地内存中的像素图,通过一些方法来执行所有修改。

在其他方面,您可以使用以下这些方式实现您的要求:

  1. 你可以使用setColor(),这是Batch接口的重载方法。

    这些是setColor方法的原型。

    public void setColor (Color tint); 
    public void setColor (float r, float g, float b, float a);
    public void setColor (float color);
    

    为您想要显示彩色的纹理设置 SpriteBatch 的颜色,绘制后再次将 Spritebatch 颜色设置为白色。

  1. 您可以使用 Sprite 保存绘制 2D 精灵的几何、颜色和纹理信息。

    Texture myTex=new Texture("badlogic.jpg");
    Sprite sprite=new Sprite(myTex);
    sprite.setColor(Color.BLUE);
    

设置随机颜色只是一个小逻辑,要么你想一次性设置随机颜色,要么延迟一段时间。