我的程序有一个方法,可以拍摄图像和颜色,并将该图像中的所有像素转换为该颜色,同时保持每个像素的透明度。
这可以在Android中使用ColorMatrixColorFilter
轻松完成,而无需使用嵌套循环遍历整个图像并单独更改每个像素,这明显变慢。
但是,我最近决定切换到libgdx,这意味着我无法使用ColorMatrixColorFilter
。 libgdx是否有任何可以执行类似操作的类,而无需手动更改每个像素?
答案 0 :(得分:2)
执行此操作的最佳方法是使用仅包含白色像素(可更改alphas)的纹理,并在使用SpriteBatch.setColor(r,g,b,a)
绘制它们之前对其进行着色 - 只需将其设置回Color.WHITE
之后。
除了必须暂停逐个像素地转换纹理之外,最大的优点是纹理不需要在自己的文件中设置,但可以放在与所有纹理相同的TextureAtlas中。其他没有着色的纹理。因为没有必要绑定纹理的不同颜色版本,SpriteBatch
最终会减少渲染调用次数,这意味着渲染速度更快。
答案 1 :(得分:1)
实际上我自己操纵每个像素并没有那么糟糕。你应该试一试。