Direct3D のデバイス (Direct3D 9)
Direct3D デバイスは、Direct3D のレンダリング コンポーネントです。これは、レンダリング ステートをカプセル化して格納します。また、Direct3D デバイスは、トランスフォームとライティング処理、およびサーフェスへのイメージのラスター化を実行します。
- XPDM と WDDM の比較
- デバイス タイプ (Direct3D 9)
- デバイスの作成 (Direct3D 9)
- ウィンドウ表示モードと全画面モード (Direct3D 9)
- デバイスの選択 (Direct3D 9)
- 喪失したデバイス (Direct3D 9)
- ハードウェア サポートの判定 (Direct3D 9)
- 頂点データの処理 (Direct3D 9)
- プリミティブ
アーキテクチャ的には、Direct3D デバイスには、次の図で示すようにトランスフォーム モジュール、ライティング モジュール、およびラスター化モジュールが含まれます。
現在、Direct3D では、次の 2 つの主要な種類の Direct3D デバイスがサポートされています。
- ハードウェアで高速化されたラスター化、およびハードウェアとソフトウェアの両方の頂点処理を行うシェーディングが可能な HAL デバイス
- リファレンス デバイス
これらのデバイスは、2 つの個別のドライバーと考えることができます。ソフトウェア デバイスとリファレンス デバイスはソフトウェア ドライバーで表され、HAL デバイスはハードウェア ドライバーで表されます。これらのデバイスの最も一般的な利用方法として、出荷されるアプリケーションには HAL デバイスを、機能テストにはリファレンス デバイスを使用します。これらは、特定のデバイス (まだリリースされていない開発ハードウェアなど) をエミュレートするためにサード パーティによって提供されます。
アプリケーションによって作成される Direct3D デバイスは、アプリケーションを実行するハードウェアの能力に対応していなければなりません。Direct3D では、コンピューターに取り付けられている 3D ハードウェアにアクセスするか、ソフトウェアで 3D ハードウェアの能力をエミュレートすることによって、レンダリング能力を提供します。そのため、Direct3D では、ハードウェア アクセスとソフトウェア エミュレーションの両方のためのデバイスが用意されています。
ハードウェアで高速化されたデバイスは、ソフトウェア デバイスよりもはるかに高いパフォーマンスを提供します。HAL デバイス タイプは、グラフィック アダプターをサポートするすべての Direct3D で使用可能です。ほとんどの場合、アプリケーションでは、末端のコンピューターに対応するために、ハードウェア アクセラレーションがあるかソフトウェア エミュレーションに依存するコンピューターを対象にします。
リファレンス デバイスを除き、ソフトウェア デバイスは、常にハードウェア デバイスと同じ機能をサポートするわけではありません。アプリケーションは、サポートされる機能を判断するために、常にデバイスの能力をクエリする必要があります。
Direct3D 9 とともに提供されるソフトウェア デバイスとリファレンス デバイスの動作は HAL デバイスの動作と同じであるため、HAL デバイスで機能するようにオーサリングされたアプリケーション コードは、変更なしで、ソフトウェア デバイスやリファレンス デバイスで機能します。提供されたソフトウェア デバイスやリファレンス デバイスの動作が HAL デバイスの動作と同じであっても、デバイスの機能はさまざまに異なり、特定のソフトウェア デバイスでは、非常に少ない能力のセットを実装している場合があることに注意してください。
動作
Direct3D では、デバイスのタイプとデバイスの動作を指定できます。IDirect3D9::CreateDevice メソッドを使用すると、Direct3D デバイスの全体的な動作を制御するための、1 つ以上の動作フラグの組み合わせが有効になります。これらの動作は、Direct3D のランタイム部分で保持されるものとされないものを指定します。また、デバイス タイプは、使用するドライバーを指定します。デバイス動作の組み合わせの中には有効でないものもありますが、すべてのデバイス動作をすべてのデバイス タイプで使用できます。たとえば、D3DCREATE_PUREDEVICE で作成されたデバイスでの D3DDEVTYPE_SW の指定は有効です。