0

計算シェーダーを使用して三角形リストを計算し、RWStructuredBuffer. テストのために、このバッファを読み取り、 経由で IA に渡しcontext.InputAssembler.SetVertexBuffers (…)ます。このアプローチは機能しますが、データの正確性をテストする場合にのみ有効です。

次に、リソース ビューを使用して (既に存在する) バッファーを IA ステージにバインドします (つまり、頂点バッファーへのポインターを渡さずに)。

私はいくつかの良い本 (Frank D. Luna、Jason Zink) を読んでいますが、このケースについて言及していません。

=============== 編集:

  1. ここで使用している構文は、SharpDX ラッパーによって課されます。

  2. ResourceViewをバインドして、バッファを頂点シェーダにバインドできcontext.VertexShader.SetShaderResource(...)ます。VS ではSV_VertexID、バッファへのアクセスに使用します。そのため、現時点では有効なソリューションがありますが、将来、バッファを入力アセンブラにバインドする必要がある場合があるかもしれません。

4

1 に答える 1

1

簡単に言えば、構造化バッファを IA ステージにバインドすることはできません。少なくとも直接的には、ランタイムはこれを許可しません。

ResourceOptionFlags.BufferStructured を OptionFlags として配置すると、VertexBuffer/IndexBuffer/StreamOutput/ConstantBuffer/RenderTarget/Depth をバインド フラグとして使用できなくなり、リソースの作成に失敗します。

GPU コピーのコストがかかるオプションの 1 つは、VertexBuffer BindFlags とデフォルトの使用法 (構造化バッファーと同じサイズ) で 2 番目のバッファーを作成することです。

構造化バッファの処理が完了したら、DeviceContext.CopyResource を呼び出します。

これで、標準の頂点バッファーをすぐに使用できるようになります。

于 2013-11-25T14:09:45.017 に答える