2016-10-24 9 views
0

は私がAssetManager経由で読み込ま質感があります。テクスチャ内のピクセルの色を変更するにはどうすればよいですか?

AssetManager manager = new AssetManager(...); 
manager.load(textureFilepath, Texture.class); 
manager.finishLoading(); 
Texture texture = manager.get(textureFilepath, Texture.class); 

を、私は、実行時にピクセルの色の一部を変更したいです。どうやってやるの?

おかげ

---更新---------

ここでテストアプリはしかし、テクスチャの外観を変更しないピックスマップを変更しようとすると、です:

public class AppTest extends ApplicationAdapter { 

    SpriteBatch batch; 
    Texture texture; 

    public void create() { 
     batch = new SpriteBatch(); 
     texture = new Texture("foo.jpg"); 
    } 

    public void render() { 
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     batch.begin(); 
     batch.draw(texture, 100, 100); 
     batch.end(); 
    } 

    private void test() { 
     TextureData textureData = texture.getTextureData(); 
     textureData.prepare(); 
     Pixmap pixmap = textureData.consumePixmap(); 

     for (int y = 0; y < 200; y++) { 
      for (int x = 0; x < 200; x++) { 
       pixmap.drawPixel(x, y, 0xff0000ff); 
      } 
     } 
    } 

    public boolean touchUp (int screenX, int screenY, int pointer, int button) { 
     test(); 
    } 
} 

答えて

1

ショート:だから最初にあなたがテクスチャデータからピックスマップを作成する必要が

pixmap.drawPixel(x, y, color); 

TextureData textureData = texture.getTextureData(); 
textureData.prepare(); 
Pixmap pixmap = textureData.consumePixmap(); 

あなたが緑に赤に変更したい場合は、ループを必要とし、あなたのためにすることをgetPixel復帰以来、RGB888値を取得する:あなたはすでに変更するか知っている場合に必要はありません

for (int y = 0; y < pixmap.getHeight(); y++) { 
    for (int x = 0; x < pixmap.getWidth(); x++) { 
     if (pixmap.getPixel(x, y) == Color.rgb888(Color.Red)) 
     { 
     pixmap.drawPixel(x, y, Color.Green); 
     } 
    } 
} 

ループを作成し、pixmap.drawPixel()を使用してください。あなたは、あなたがそれのために新しいテクスチャを作成することができ、あなたのPixmap魔法で行われ

Texture pixmapTexture = new Texture(pixmap); 
+0

こんにちは、私は運を試みましたが、おそらくいくつかのステップがありません - 上記のテストアプリを投稿しました。 – user3203425

+0

@ user3203425うん、 'Pixmap'を再びテクスチャに変換するのを忘れてしまった。答えを更新します。 – Madmenyo

+0

ありがとうございました! – user3203425

関連する問題