Pixmapを使用してLibGDXで「破壊可能な」地形(2D)を作成しようとしています。 しかし、設定している色が画面に正しく表示されません。LibGDX pixmapがピクセルを正しく更新しない
完全なソース(色は、デバッグのために現在、リリースのアルファ= 0でなければならない):
public class Terrain extends Actor implements Disposable {
private Sprite mySprite;
private Texture myTexture;
private Pixmap myMap;
public Terrain(Texture texture, Vector2 position)
{
setPosition(position.x, position.y);
if (!texture.getTextureData().isPrepared()) {
texture.getTextureData().prepare();
}
// Final product will take original image from a texture to create pixmap
// myMap = texture.getTextureData().consumePixmap();
myMap = new Pixmap(400, 400, Pixmap.Format.RGBA8888);
myMap.setBlending(Pixmap.Blending.SourceOver);
myMap.setColor(Color.BLUE);
myMap.fillRectangle(0, 0, 400, 400);
myTexture = new Texture(myMap, Pixmap.Format.RGBA8888, false);
mySprite = new Sprite(myTexture);
}
public void removePixels(List<Vector2> pixels)
{
myMap.setColor(Color.GREEN);
myMap.fillCircle(1,1,1);
myMap.setColor(Color.YELLOW);
for (Vector2 pixel:pixels) {
myMap.fillCircle((int)pixel.x, (int)pixel.y, 1); // Works, but is Black?
myMap.drawPixel((int)pixel.x, (int)pixel.y, 255) // Does not work
}
myTexture = new Texture(myMap, Pixmap.Format.RGBA8888, false);
mySprite = new Sprite(myTexture);
System.out.println("Pixels Removed");
}
@Override
public void draw(Batch batch, float parentAlpha) {
batch.draw(mySprite, getX(), getY(), mySprite.getWidth(), mySprite.getHeight());
// batch.draw(myMap, getX(), getY(), myMap.getWidth(), myMap.getHeight());
}
@Override
public void dispose() {
myMap.dispose();
}
drawPixelで描かれた画素が表示されませんがfillCircleで描かれた形状は、常に黒であり、いくつかの理由更新(元の色のまま)。 LibGDXでピクセルを設定するにはどうすればいいですか? (好ましくはglslを使用しないで)
私はdrawCircleではなく、fillCircleを呼び出しています(3番目の引数(1)はこの円の半径です)。さらに、drawPixel()呼び出しは(0を試した(空の場合)、255、1024、2048)引数では機能しません。 私はスプライトを使用している理由は、私のゲームのすべてのオブジェクトがスプライトを持っているので、私の衝突を書き換えるよりスプライトを使用するほうが簡単です。 テクスチャが既に私のピックスマップをソースとして使用している場合、「テクスチャに描画する」必要がありますか? –