4

LibGDXでテクスチャをPixmapに変換しようとしているので、いくつかの実験のためにすべてのピクセルデータをByteBufferに取得できます。私が言えることから、次のようにすることでこれを実行できるはずです。

Pixmap pixmap = textureName.getTexture().getTextureData().consumePixmap();
ByteBuffer data = pixmap.getPixels();

これは適切なサイズのPixmapを返すようであり、ByteBufferは問題なく作成されているように見えますが、完全にゼロで埋められているため、空白の透明な画像になります。これと他のいくつかのテストにより、Pixmap自体がそのような完全に透明なイメージとして作成されているだけであると私は信じていますが、それを引き起こしている可能性のあるものを見つけることができません。これが機能するのを妨げる何らかの制限がありますか、それとも私は単に明らかな何かを見逃していますか?

4

2 に答える 2

7

API ( consumePixmap()) は、クラスが Pixmap を GPU にプッシュTextureするときにデータを抽出するためのものだと思います。 Libgdxオブジェクトは GPU 上のテクスチャ データを表すため、基になるデータを CPU に取得することは一般に簡単ではありません (レンダリング API の「間違った」方向です)。http://code.google.com/p/libgdx/wiki/GraphicsPixmapを参照してくださいPixmap
Texture

さらに、ドキュメントにconsumePixmap()は、機能する前に呼び出しが必要であるprepare()と書かれています。

テクスチャからピクセル情報を抽出するには、オブジェクトを構築しFrameBuffer、それにテクスチャをレンダリングしてから、ピクセルを抽出します (「 」を参照ScreenUtils)。

何を達成しようとしているのかは明確ではありませんが、別の方向 (バイト配列 -> Pixmap-> Texture) に進み、バイト配列を変更して変換をやり直すとうまくいく場合があります。

于 2013-02-25T01:14:01.747 に答える