在libgdx中等效的ColorMatrixColorFilter

时间:2012-10-29 09:26:41

标签: android libgdx

我的程序有一个方法,可以拍摄图像和颜色,并将该图像中的所有像素转换为该颜色,同时保持每个像素的透明度。

这可以在Android中使用ColorMatrixColorFilter轻松完成,而无需使用嵌套循环遍历整个图像并单独更改每个像素,这明显变慢。

但是,我最近决定切换到libgdx,这意味着我无法使用ColorMatrixColorFilter。 libgdx是否有任何可以执行类似操作的类,而无需手动更改每个像素?

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用仅包含白色像素(可更改alphas)的纹理,并在使用SpriteBatch.setColor(r,g,b,a)绘制它们之前对其进行着色 - 只需将其设置回Color.WHITE之后。

除了必须暂停逐个像素地转换纹理之外,最大的优点是纹理不需要在自己的文件中设置,但可以放在与所有纹理相同的TextureAtlas中。其他没有着色的纹理。因为没有必要绑定纹理的不同颜色版本,SpriteBatch最终会减少渲染调用次数,这意味着渲染速度更快。

答案 1 :(得分:1)

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/Sprite.html#setColor(com.badlogic.gdx.graphics.Color 看看setColor();

实际上我自己操纵每个像素并没有那么糟糕。你应该试一试。