Direct3D デバイス (Direct3D 9)

Direct3D デバイスは、Direct3D のレンダリング コンポーネントです。 レンダリング状態をカプセル化して格納します。 さらに、Direct3D デバイスは変換と照明操作を実行し、イメージをサーフェスにラスター化します。

アーキテクチャとしては、次の図に示すように、変換モジュール、照明モジュール、ラスタライズ モジュールが 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を指定すると有効です。

はじめに