1

非常に大きな 16 進グリッドを生成しています (32 ピクセル幅の 16 進で最大 120k の合計 16 進は 12k 幅の画像になります)、libgdx でこれらを OpenGL テクスチャにバインドする効率的な方法を見つけようとしています。複数の FBO を使用し、必要に応じてグリッドをタイルに分割することを考えていましたが、FBO 間の連続性を確保する方法がわかりません。1 つの大規模な FBO から始めることはできません。これはテクスチャによってバックアップされているため、ビデオ メモリにロードしようとすると失敗するからです。OpenGL サーフェスの描画機能が必要なため、ヒープで標準のビットマップを使用できません。

そこで私が考えていたのは、FBO をオーバードローし、どうにかして前の FBO が中断したところから次の FBO を再開する必要があるということでし。ただし、これについてどうすればよいかわかりません。参考までに、一連の六角形のメッシュで六角形のグリッドを描いています。

もちろん、私が思いもよらなかった、もっと簡単で効率的な方法がおそらく他にもあるでしょう。

4

1 に答える 1

3

あなたはそれをバラバラに描く必要があります。ヘクスグリッドを任意の位置から描画できる必要があります。これは、マップ上にオーバーレイされた長方形に基づいて、描画するヘクスを計算できることを意味します。これは難しい問題ではなく、画面外に余分なものを描画することについてあまり心配する必要はありません。先に進む前に、任意の位置からヘクスマップを表示するこの機能を習得する必要があります。

それをマスターしたら、それは本当に簡単です。

左上隅を描画し、ピクセルデータを保存します。次に、描画している領域をちょうど1つの画像幅に移動します。それを描いて保存します。領域を1つの画像幅に移動します。描画して保存します。幅全体をカバーするまでそれを続けます。

画像の高さを1つ下げて、このプロセスを繰り返します。幅と高さがなくなったら、完了です。巨大な画像を保存します。

このためにFBOは必要ありません。必要に応じて、画面に描画できます。glReadPixelsただし、最大のパフォーマンスが必要な場合は、FBOを使用し、それらをダブルバッファリングし、ピクセルバッファオブジェクトを使用することをお勧めします。これにより、レイテンシーが大幅に削減されます。

于 2012-02-02T01:07:47.790 に答える