1

大学のプロジェクトで変形可能なボクセル テレインを作成しようとしています。現在、ボクセルデータを「チャンク」に保持するために、いくつかの 3DTextures を使用しています。私の計画は、コンピューティング シェーダーを使用して、前述のボクセル データに対してマーチング キューブ アルゴリズムを実行し、頂点をバッファーに出力してから、各フレームをレンダリングできるようにすることでした。

問題は、使用している構造化バッファー用に UAV をセットアップするために、D3D11_BUFFER_UAV の NumElements に含まれる要素の数を知る必要があることです。含まれる可能性が高い最大値について推測することはできますが、計算シェーダーが終了するまで実際にいくつになるかを知る方法はなく、これが問題を解決する最良の方法ではない可能性があることに気づきました.

私が本当にする必要があるのは、後で保存してレンダリングできる任意の数の頂点を計算シェーダーに出力させることだけです。これを行うための最良の方法についてのアイデアはありますか?

4

2 に答える 2

0

これを行う最善の方法は、追加バッファを使用することです。マルチスレッドは、要素をランダムに追加できるように特別に設計されているため、要素を追加する順序に依存しないように注意する必要があります。一度に 1 つの Triangle ずつデータを追加する必要があったため、インデックス バッファーを使用できなくなりましたが、これを行う他の方法は見当たりませんでした。

誰かがより良い解決策を思いついたら、私はそれを聞いてうれしいです.

于 2013-04-14T15:06:55.503 に答える
0

ボクセル エンジンでも同じ問題が発生しました。最初は、生成される可能性のある最大数の頂点を格納できるようにバッファーを割り当てました。

動作を確認した後、使用する予定のノイズ関数を使用してプレイ テストを行い、頂点バッファーに必要な頂点の最大数を記録しました。

次に、少し追加して、その値をアプリケーション内のすべての頂点バッファーのサイズとして使用しました。

于 2013-04-17T14:58:55.027 に答える