Platform SDK: DirectX |
注 : ここでは、C++ でのアプリケーション開発について説明する。DirectX for Visual Basic では、以下のデバイスの種類はサポートしていない。
旧リリースの DirectX では、MMX デバイスおよびランプ デバイスという 2 つの追加のデバイスの種類をサポートしていた。これらのデバイスは現在のバージョンの DirectX では使用されないが、従来のインターフェイスを介して使用できる。
MMX とは、いくつかのマイクロプロセッサがサポートする特別な命令セットである。MMX デバイスを利用することで、マルチメディアおよび 3D 処理のパフォーマンスが向上する。MMX サポートがインストールされている場合、Direct3D はそれを使用してレンダリングの処理速度を上げる。
MMX デバイスは、HAL デバイスのようなハードウェア アクセラレーション デバイスではない。トランスフォーム、ライティング、およびラスタ化モジュールは、ソフトウェアに完全実装される。しかし、MMX デバイスは、他の種類のソフトウェア エミュレーション Direct3D デバイスよりもパフォーマンス面で優れている。
アプリケーションで IDirect3D2 インターフェイスを使用する場合は、明示的に MMX デバイスを作成しなければならない。しかし、IDirect3D3 インターフェイスからは、MMX デバイスと RGB デバイスはまったく同じ機能セットを実装する (「RGB デバイス」を参照すること)。マイクロプロセッサが MMX テクノロジをサポートしている場合、アプリケーションで RGB デバイスを作成しようとすると、Direct3D は自動的に MMX デバイスを作成する。
アプリケーションでは、IDirect3D3::CreateDevice メソッドを呼び出し、第 1 パラメータとして IID_IDirect3DMMXDevice を渡して MMX デバイスを作成する。詳細については、「Direct3D デバイスの作成」を参照すること。ユーザーのコンピュータで MMX テクノロジがサポートされていない場合、アプリケーションが MMX デバイスの作成を明示的に要求すると、CreateDevice は失敗する。
IDirect3D3 または IDirect3D7 インターフェイスを使用して Direct3D ランプ デバイスを作成することはできない。また、IDirect3DDevice3 または IDirect3DDevice7 インターフェイスについて既存のランプ デバイスを問い合わせることもできない。簡単に言えば、ランプ デバイスは、マルチ テクスチャ ブレンディング オプションをサポートしていない。これらの機能をエミュレートするには、MMX または RGB ソフトウェア エミュレーション デバイスを使用する。
ランプ デバイスは、モノクロ ライティングを使用するソフトウェア エミュレーション デバイスである。ユーザーのコンピュータに、別の種類の Direct3D デバイスをサポートするだけの処理能力がない場合、アプリケーションはランプ デバイスを選択できる。ランプ モードでは、トランスフォーム モジュールは完全に利用できるが、カラー ライティングはサポートされていない。ランプ モード デバイスでは、モノクロ グレースケール ライティング用の Direct3D ライティング モジュールのみ使用する。したがって、ランプ モードのライティングには輝度はあるが色はない。グレースケール値は、ライティング色の青成分に格納される。
ランプ モードでは、色マテリアルとテクスチャを使用できる。Direct3D では、マテリアルまたはテクスチャの色をベース カラーとして使用する。白色光 (輝度が最も高い) をマテリアルやテクスチャに当てる場合は、ベース カラーが使用される。ただし、ライティングの強度が最大ではない場合、マテリアルまたはテクスチャの色にグレーや黒が混ざる。アプリケーションでテクスチャをランプ モードで使用する場合、従来の D3DLIGHTSTATETYPE 列挙型の D3DLIGHTSTATE_MATERIAL メンバを設定する必要がある。ランプ モードでは、8 ビットのテクスチャのみ使用できる。
ランプ モードでマテリアルまたはテクスチャのカラー値を制御するには、アプリケーションの作成時に D3DMATERIAL 構造体の dwRampSize メンバを設定する必要がある。Direct3D はマテリアルおよびテクスチャの色をベース カラーとして使用する。dwRampSize メンバの値によって、ライティングの明度に応じた、ベース カラーのグラデーション数が決まる。Direct3D は、dwRampSize メンバで指定されたエントリ数 (1 ベース) の色パレットを作成する。パレットの最大エントリ数は 256 未満 (Windows が使用する予約済み色数を 256 から引いた数) であるため、アプリケーションに必要なグレースケール値の最小数を指定する必要がある。
最適な結果を得るには、アプリケーションのマテリアルの大部分またはすべてのランプ サイズを同じ値にする。Direct3D がパレットのエントリを使い切ると、既存のマテリアルを検索して最も近い色を検出する。ランプ サイズが同じマテリアルのみ一致するものと見なされる。
ランプ デバイスは、主に既存のアプリケーションとの互換性を保つために用意されている。一般に、RGB デバイスをサポートするだけの処理能力がないコンピュータは、3D アプリケーションには不向きである。
アプリケーションで IDirect3D2::CreateDevice メソッドを呼び出し、第 1 パラメータとして IID_IDirect3DRampDevice を渡してランプ デバイスを作成する。詳細については、「Direct3D デバイスの作成」を参照すること。