1

さて、私は多くの場所を見てきましたが、問題の解決策を見つけることができません。マルチスレッドレンダリング環境で各オブジェクトを同時にレンダリングしたい、または多くの人がそれを遅延レンダリングと呼んでいます。

マルチスレッドを実装しようとするまで、現在のシステムはまったく機能しません。

遅延レンダリングのアイデアは私を大いに混乱させます.指定されたテクスチャとシェーダーを持つ配列からオブジェクトを遅延方法でレンダリングするシステムを作成する方法についての良い説明が必要です.そこには良い説明がなく、キーワード...

4

1 に答える 1

0

試してみますが、遅延コンテキストまたは遅延レンダリングが必要かどうかわかりません。

私が理解していることから、遅延レンダリングはテクスチャへのレンダリングです。Texture2D BindFlags が D3D11_BIND_SHADER_RESOURCE に設定されている | D3D11_BIND_RENDER_TARGET (SharpDX バージョンを使用)。つまり、シェーダー リソースであると同時にレンダー ターゲットでもあります。

それを outputmergerstage 、Render stuff に設定し、解放してから、後処理やモデルのテクスチャとして使用するなど、好きなことを行うためにシェーダー ステージ (通常はピクセル) に設定します。

マルチスレッド化する場合は、遅延コンテキストを使用します。これはタイプ DeviceContext です。Device.ImmediateContext からインスタンス化します。

私はこれに精通していないので、これは私が理解していることです。

完了したら「コマンドリスト」をエクスポートしてimmediateContextに送信することを除いて、即時コンテキストと同じように遅延コンテキストを使用します。これには、即時コンテキストで設定したものを使用しないため、遅延コンテキストですべてのシェーダー オブジェクトを設定する必要があるなど、さらに多くのことがあります。実際、すべての設定の即時コンテキストが消去されると思います。

ビデオカードの仕様も確認してください。dx11 をサポートしているからといって、マルチスレッドをサポートしているわけではありません。これは、舞台裏で遅延コンテキストのものを偽造することを意味します。(はい、私のカードは少し古いです)

お役に立てれば。

于 2015-05-06T20:16:45.097 に答える