我的程序有一个方法,应该采取一个图像和一个颜色,并把图像中的所有像素变成那个颜色,同时保持每个像素的透明度。
这可以在android中使用ColorMatrixColorFilter
轻松完成,而无需使用嵌套循环遍历整个图像并分别更改每个像素,这明显要慢得多。
然而,我最近决定切换到libgdx,这意味着我不能使用ColorMatrixColorFilter
。libgdx是否有任何类可以做类似的事情,而不需要我手动更改每个像素?
最佳答案
最好的方法是使用只有白色像素的纹理(这些像素改变了字母),并在用SpriteBatch.setColor(r,g,b,a)
绘制之前对它们进行着色——只需在绘制之后设置为Color.WHITE
即可。
除了必须暂停以逐像素地变换纹理之外,这一操作的最大优点是不需要在自己的文件中设置纹理,而是可以将纹理与所有未着色的其他纹理放在同一个纹理中。因为不需要绑定纹理的不同颜色版本,SpriteBatch
最终生成的渲染调用要少得多,这意味着渲染速度更快。
关于android - 与libgdx中的ColorMatrixColorFilter等效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13118845/