3

私のプログラムには、画像と色を取得し、各ピクセルの透明度を維持しながら、その画像のすべてのピクセルをその色に変換するメソッドがあります。

ColorMatrixColorFilterこれは、ネストされたループを使用して画像全体を調べ、各ピクセルを個別に変更する必要なく、Android を使用して簡単に実行できます。これは大幅に遅くなります。

しかし、最近、libgdx に切り替えることにしました。つまり、ColorMatrixColorFilter. libgdx には、各ピクセルを手動で変更することなく、同様のことを行うクラスがありますか?

4

2 に答える 2

2

これを行う最善の方法は、白いピクセルのみ (アルファが異なる) のテクスチャを使用し、それらを描画する前にSpriteBatch.setColor(r,g,b,a)--just set back to Color.WHITEafter で着色することです。

テクスチャをピクセルごとに変換するために一時停止する必要があることを除けば、これの最大の利点は、テクスチャを独自のファイルに設定する必要がなく、他のすべてのテクスチャと同じ 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 に答える