2

実際には 1 つの質問の束である質問を送信したので、要求に応じてそれらを個別の質問に分割しています。

direct3D に関する一般的な質問です。hlsl 5.0 シェーダーを使用して完全に d3d11 でアプリケーションを作成した場合、これらは d3d10 または d3d9 対応のシステムとのみ互換性があり、グラフィカルな効果と d3d11 の効率が低下しますか? もしそうなら、それはどれほど効率が悪いでしょうか?そうでない場合、d3d9、d3d10、および d3d11 を使用する場合を除いて、まったく同じプログラムの 2 つまたは 3 つの異なるバージョンを真剣に作成する必要がありますか?

4

3 に答える 3

3

ある程度の下位互換性があります。ただし、次の点に注意してください。

  • DX11 は Vista+ にのみインストールできます。これにより、宗教上の理由でまだ XP を使用している人は排除されます (個人的にはばかげていると思いますが、それは知っておく必要がある事実です)。
  • DX11 のキラー機能 (ハードウェア テッセレーション) は、DX11 準拠のハードウェアでのみ使用できます。私を信じてください-それがあなたに与える可能性が非常に高いため、使用を控えるのは本当に難しいでしょう. これは、ジオメトリ シェーダーを使用することである程度補正できますが、次のポイントを参照してください。
  • ジオメトリ シェーダーは、DX10.0 クラス (またはそれ以上) のハードウェアでのみ使用できます。つまり、DX9 クラスの HW は計算外です... また...
  • コンピューティング シェーダーは、DX10.0+ クラスのハードウェアではある程度利用できますが (非常に限られています)、以前のハードウェアでは完全に利用できません。

これをまとめると、ターゲット プラットフォームが DX10.0+ クラスのハードウェアである場合、DX11 を使用することはある程度理にかなっています (ハードウェア テッセレーションは別として、相違点は許容できるか、欠落している機能に対する回避策があるため)。DX9 HW をサポートしたい場合は、XP でアプリを実行できるようにするため、DX9 SDK を使用することをお勧めします。

于 2012-04-17T22:15:09.010 に答える
2

前のコメントが完全に正しいとは思いません。

ターゲット マシンに DX11 ランタイムをインストールする必要がある場合がありますが、DX9+ ハードウェアと互換性のある任意のカードで D3D11Device を作成できるはずです。

サポートする機能レベルのリスト (またはリストを意味する NULL) を渡す必要があり、関数にはどの機能レベルを取得したかを示す出力パラメーターがあるためです。したがって、DX9 のみのカードは D3D_FEATURE_LEVEL_9_1 (または 9_2/9_3) で返されます。

機能レベルにより、d3d11 のどのチャンクが利用可能で、どのように動作するかを知ることができます ( http://msdn.microsoft.com/en-us/library/windows/desktop/ff476150(v=vs.85) .aspxおよびhttp://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx )

これらのチャートから簡単に理解できることは、DX10 および DX11 デバイスをカバーするには、おそらく DX11 が適しているということです。これらの機能が必要な場合は、/依存/に応じて DX9 でも問題ない可能性があります。

計算シェーダーは、主に DX10 ハードウェアで動作します (http://msdn.microsoft.com/en-us/library/windows/desktop/ff476873(v=vs.85).aspx)

于 2012-04-17T15:43:08.387 に答える
1

いいえ、後方互換性はありません。より多くのプラットフォームで実行したい場合は、directX11 対応のグラフィックス カードが確実に directx9 をサポートします。したがって、DX9 で 1 回開発するか、DX11 と DX9 の両方で開発します。

于 2012-04-17T15:28:08.230 に答える