3

LibGDXベースのAndroidアプリに、コンテキストの損失を通じて保持する必要のあるFrameBuffersを介して手続き的に作成されたテクスチャがあります。これを行う唯一の効率的な方法は、完全な画像または生データとしてデータを保存することです。データを出力し、時が来たらロードし直します。しかし、私が取ったすべてのルートが何らかの形で完全な失敗につながったため、これを達成する方法を見つけるのに苦労しています。

私はかなり周りを検索しましたが、私が遭遇したものは何もうまくいきませんでした。私は主に、これまで行ってきた目的のない検索や試みではなく、正しい方向へのヒントを探しています。テクスチャからのすべてのデータをある種の「バッファ」に変換し、データを内部に保存してから、データをリロードしてテクスチャを再作成するのが最善だと思いますが、最善の方法はわかりません。それをやろうとしています。

4

1 に答える 1

2

このPixmapIOクラスは、実行時に生成されたピックスマップを書き出すのに役立つはずです。ただし、FBOテクスチャで探しているものとはまったく異なります。(からにPixmap移動Textureするのは簡単ですが、他の方法に移動するのはそれほど簡単ではありません。)FBOでデータを生成するために使用するプリミティブがPixmap(たとえば、基本的な幾何学的プリミティブ)で利用できる場合、それは代替手段になる可能性があります。これは、ランタイムテクスチャを保存するためにサポートされているメカニズムに最も近いlibGDXだと思いますが、私は前向きではありません。

フレームバッファからバイトをスクレイピングするためのlibGDXコードがいくつかあります(FBOのテクスチャデータはすべてGPUに存在するため、通常のメモリにコピーするには、いくつかのフープをジャンプする必要があります)。スクリーンショットとPNGについては、こちらのリンクを参照ScreenUtilsしてください。

から返されたメソッドPixmapIOを使用して、「CIM」形式のファイルを書き出すように簡単に調整できるはずです。byte[]ScreenUtils

または、FBOに対して実行された「操作」のリストを追跡して、それらを再生する(後でコンテンツを再構築する)こともできます。それはあなたのテクスチャに何が入っているかに大きく依存しますが...

于 2013-02-16T05:36:57.477 に答える