0

1 つのグラフィック コンテキストのみを使用して DirectX 12 で複数のモデルをレンダリングしようとしていますが、結果は非常に奇妙で、その理由がよくわかりません。ここに画像の説明を入力外部からのスポンザ モデルのレンダリング結果。右が正しい結果で、左が問題のある結果です。

ここに画像の説明を入力左スポンザ(問題のある方)を内側からレンダリングした結果。

読み込まれた 2 つのメッシュが同じであっても、各モデルには独自の頂点バッファー、インデックス バッファー、および SRV があります。グラフィックス コンテキストを作成するプロセスでは、グラフィックス コンテキストが 1 つだけあり、各モデルのインデックスと頂点バッファーが設定されます。次に、drawIndexed() 関数を呼び出してレンダリングします。グラフィックス コンテキストが作成された後、フレームごとに 1 回グラフィックス コンテキストを実行します。ただし、モデルごとに個別のグラフィック コンテキストを作成し、フレームごとにすべてのグラフィック コンテキストを実行すると、レンダリングは正常に機能しますが、フレーム レートは大幅に低下します。

奇妙な結果の理由が何であるかについてのヒントを提供することは非常に役に立ちます。解決策を提供することはさらに良いことです. よろしくお願いします。

4

1 に答える 1

-1

まず、dx11 の専門家であり、トリプル A ゲームや GPU メモリの制御に対する非常に特定の高い要求など、上位 1% のアプリケーション ケースでない限り、dx12 には近づかず、dx11 に固執することをお勧めします。

ここであなたの問題について詳しく説明することはできませんが、いくつかの基本的なアドバイスしかできません。

  1. デバッグ レイヤーで実行し、コンソール ログを確認しますD3D12GetDebugInterface(グラフィック ツールという名前のオプション機能をインストールする必要があります)。
  2. Visual Studio の VSGD や nVidia の nsight などのフレーム キャプチャ ツールを使用して、フレームを段階的に検査します
  3. 本当にDx11を使用してください
于 2016-08-12T05:04:23.950 に答える