Direct3D デバイス (Direct3D 9)
Direct3D デバイスは、Direct3D のレンダリング コンポーネントです。 レンダリング状態をカプセル化して格納します。 さらに、Direct3D デバイスは、変換と照明操作を実行し、イメージをサーフェスにラスター化します。
- XPDM と WDDM
- デバイスの種類 (Direct3D 9)
- デバイスの作成 (Direct3D 9)
- ウィンドウモードと Full-Screen モード (Direct3D 9)
- デバイスの選択 (Direct3D 9)
- 紛失したデバイス (Direct3D 9)
- ハードウェア サポートの決定 (Direct3D 9)
- 頂点データの処理の (Direct3D 9)
- プリミティブ
アーキテクチャ上、Direct3D デバイスには、次の図に示すように、変換モジュール、照明モジュール、ラスタライズ モジュールが含まれています。
direct3d デバイス アーキテクチャの図
Direct3D は現在、2 種類の Direct3D デバイスをサポートしています。
- ハードウェアとソフトウェアの両方の頂点処理を使用してハードウェアで高速化されたラスタライズとシェーディングを備えた hal デバイス
- 参照デバイス
これらのデバイスは、2 つの個別のドライバーと考えることができます。 ソフトウェアおよび参照デバイスはソフトウェア ドライバーで表され、hal デバイスはハードウェア ドライバーによって表されます。 これらのデバイスを利用する最も一般的な方法は、出荷アプリケーションに hal デバイスを使用し、機能テスト用の参照デバイスを使用することです。 これらは、特定のデバイス (まだリリースされていない開発用ハードウェアなど) をエミュレートするためにサード パーティによって提供されます。
アプリケーションが作成する Direct3D デバイスは、アプリケーションが実行されているハードウェアの機能に対応している必要があります。 Direct3D は、コンピューターにインストールされている 3D ハードウェアにアクセスするか、ソフトウェアで 3D ハードウェアの機能をエミュレートすることによって、レンダリング機能を提供します。 そのため、Direct3D は、ハードウェア アクセスとソフトウェア エミュレーションの両方にデバイスを提供します。
ハードウェアアクセラレータデバイスは、ソフトウェアデバイスよりもはるかに優れたパフォーマンスを提供します。 hal デバイスの種類は、Direct3D でサポートされているすべてのグラフィック アダプターで使用できます。 ほとんどの場合、アプリケーションはハードウェア アクセラレーションを備え、ソフトウェア エミュレーションに依存して下位のコンピューターに対応するコンピューターを対象とします。
参照デバイスを除き、ソフトウェア デバイスは常にハードウェア デバイスと同じ機能をサポートするとは限りません。 アプリケーションでは、サポートされている機能を判断するために、常にデバイス機能のクエリを実行する必要があります。
Direct3D 9 で提供されるソフトウェアおよび参照デバイスの動作は hal デバイスの動作と同じであるため、hal デバイスで動作するように作成されたアプリケーション コードは、変更なしでソフトウェアまたは参照デバイスで動作します。 提供されるソフトウェアまたは参照デバイスの動作は hal デバイスの動作と同じですが、デバイスの機能は異なり、特定のソフトウェア デバイスは、はるかに小さな機能セットを実装できます。
動作
Direct3D を使用すると、デバイスの動作とデバイスの種類を指定できます。 IDirect3D9::CreateDevice メソッドを使用すると、1 つ以上の動作フラグを組み合わせて Direct3D デバイスのグローバル動作を制御できます。 これらの動作では、Direct3D の実行時部分で維持される内容と保持されないものを指定し、デバイスの種類によって使用するドライバーが指定されます。 一部のデバイス動作の組み合わせは無効ですが、すべてのデバイスの種類ですべてのデバイス動作を使用できます。 たとえば、D3DCREATE_PUREDEVICEで作成されたデバイスでD3DDEVTYPE_SWを指定すると有効です。
関連トピック