Microsoft DirectX 8.0 (C++) |
Microsoft® Direct3D® は、ハードウェア アブストラクション レイヤ (HAL) によってデバイスの独立性を提供する。HAL は、デバイス メーカーから提供されるデバイス固有のインターフェイスで、Direct3D はそれを使ってディスプレイ ハードウェアを直接動作させる。アプリケーションは、HAL とは決して相互作用しない。むしろ HAL の提供するインフラを使って、Direct3D はアプリケーションがグラフィックスを表示するために使うインターフェイスやメソッドの一貫したセットを公開する。デバイス メーカーは、Microsoft Windows® のもとでは 16 ビット コード、32 ビット コードの組み合わせで HAL を実装する。Windows NT® および Windows 2000 のもとでは、HAL は常に 32 ビット コードで実装される。HAL は、ディスプレイ ドライバの一部であったり、ドライバの作成者が定義するプライベート インターフェイスからディスプレイ ドライバと通信する個別の DLL になることもできる。
Direct3D HAL は、チップ メーカー、ボード製作者、または OEM 業者により実装される。HAL は、デバイス依存のコードを実装するだけで、エミュレーションは行わない。ある機能がハードウェアにより実行されないとしても、HAL はそれをハードウェア能力と見なして報告しない。さらに、HAL はパラメータを確認しないので、HAL が起動される前に Direct3D がこのパラメータを確認する。
DirectX 8.0 では、HAL は 3 種類の頂点処理モードを持つことができる。ソフトウェア頂点処理、ハードウェア頂点処理、および同一デバイスでの混合頂点処理である。ピュア デバイス タイプは HAL デバイスの一種である。ピュア デバイス タイプはハードウェアによる頂点処理のみをサポートし、アプリケーションが照会できるのはデバイス ステートの小さなサブセットに限られる。さらに、ピュア デバイスは、最小レベルの能力を備えたアダプタでのみ使用できる。