1

VBOについて質問です。例として、16x16x16 のチャンクを作成するボクセル スタイル エンジンを構築しようとしているとしましょう。

マップ情報を VBO に保存しますか? 立方体の頂点を取得するにはどうすればよいですか? 私が考えている方法では、VBO には 24 個の vector3 変数 (各場所の各キューブのベクトル) が必要です。それはたくさんのようです。

単一の「キューブ」VBOテンプレートを作成し、描画する各キューブの座標を何らかの方法で変更し、テンプレートを呼び出して(それが理にかなっていることを願っています)、bufferdataを使用してすべての場所のテンプレートを更新する方法はありますか? 16x16x16 のすべての場所に対して実際にこれらの 24 個のベクトルを保存する必要がありますか、それともマップ座標を保存してから、シェーダーを介してキューブとポリゴンを描画しますか?

それが理にかなっていることを願っています。ロケーションごとに24個のベクトルを格納するものをロードするのは高価なメモリのようであり、フレームごとにbufferdataを16x16x16回呼び出すのはリソースを集中的に使用するようです...したがって、頂点シェーダーを使用する最後のオプションが最も実行可能のようですが、私は初めてですシェーダーなので、そのようなことは可能ですか?

最も一般的に使用される方法は何ですか?

4

1 に答える 1

2

実際、ジオメトリ シェーダーは、単一の入力プリミティブに対して複数のプリミティブを放出できます。したがって、1 つの入力ポイントから立方体の 6 つの面すべてを描画することは確かに可能です。ただし、「ボクセル」エンジンの場合は、立方体の向きが役に立たないことが多いため、ポイント スプライトを使用したほうがよい場合があります。ポイント スプライトは、入力ポイントから画面に沿って配置された単一のクワッドを描画します。それを超えて、あなたがしていることについてより具体的にする必要があります。

于 2012-07-08T05:31:03.587 に答える