更改纹理的颜色
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
这是一个保存在本地内存中的像素图,通过一些方法来执行所有修改。
在其他方面,您可以使用以下这些方式实现您的要求:
你可以使用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
颜色设置为白色。
或
您可以使用 Sprite
保存绘制 2D 精灵的几何、颜色和纹理信息。
Texture myTex=new Texture("badlogic.jpg");
Sprite sprite=new Sprite(myTex);
sprite.setColor(Color.BLUE);
设置随机颜色只是一个小逻辑,要么你想一次性设置随机颜色,要么延迟一段时间。
是否可以将纹理的颜色更改为随机颜色?如果可能,我该怎么做? 我认为另一种方法是用不同颜色的对象创建一个精灵 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
这是一个保存在本地内存中的像素图,通过一些方法来执行所有修改。
在其他方面,您可以使用以下这些方式实现您的要求:
你可以使用
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
颜色设置为白色。
或
您可以使用
Sprite
保存绘制 2D 精灵的几何、颜色和纹理信息。Texture myTex=new Texture("badlogic.jpg"); Sprite sprite=new Sprite(myTex); sprite.setColor(Color.BLUE);
设置随机颜色只是一个小逻辑,要么你想一次性设置随机颜色,要么延迟一段时间。