3

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

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

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

4

2 回答 2

2

做到这一点的最好方法是使用只有白色像素的纹理(不同的 alpha),并在绘制它们之前对它们进行着色 - 只是SpriteBatch.setColor(r,g,b,a)设置回Color.WHITE之后。

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

于 2012-11-01T02:02:45.293 回答
1

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

实际上,我确实自己操作每个像素,而且还不错。你应该试一试。

于 2012-10-29T09:58:42.507 回答