更改纹理的颜色

时间:2017-07-25 11:15:52

标签: android libgdx textures

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

2 个答案:

答案 0 :(得分:0)

如果您有白色纹理,那么您只需更改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

答案 1 :(得分:0)

您无法更改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颜色设置为白色。

  2. OR

    1. 您可以使用包含几何图形,颜色和纹理信息的Sprite来绘制2D精灵。

      Texture myTex=new Texture("badlogic.jpg");
      Sprite sprite=new Sprite(myTex);
      sprite.setColor(Color.BLUE);
      
    2. 设置随机颜色只是一个小逻辑,要么您想要一次设置随机颜色,要么设置一些延迟时间。