Microsoft DirectX 8.0 (C++)

モノクロ ライト マップ

一部の古い 3D アクセラレータ ボードでは、転送先ピクセルのアルファ値を使用するテクスチャ ブレンディングをサポートしていない場合がある。詳細については、「アルファ テクスチャ ブレンディング」を参照すること。これらのアダプタでは、一般にマルチ テクスチャ ブレンディングもサポートしていない。このようなアダプタでアプリケーションを実行する場合は、マルチパス テクスチャ ブレンディングを使用してモノクロ ライト マッピングを実行できる。

モノクロ ライト マッピングを実行するには、アプリケーションでライティング情報をライト マップ テクスチャのアルファ データに格納する。アプリケーションは、Microsoft® Direct3D® のテクスチャ フィルタリング能力を使用して、プリミティブの画像の各ピクセルからライト マップの対応するテクセルへのマッピングを実行する。プログラムで、転送元ブレンディング係数を対応するテクセルのアルファ値に設定する。

次の C++ コードは、アプリケーションでテクスチャをモノクロ ライト マップとして使用する方法を示している。

// この例では、d3dDevice は IDirect3DDevice8 インターフェイスへの有効なポインタであり、
// lptexLightMap はモノクロ ライト マップ データを含むテクスチャへの
// 有効なポインタであると仮定している。

// ライト マップ テクスチャをカレント テクスチャとして設定する。
d3dDevice->SetTexture(0, lptexLightMap);

// カラー処理を設定する。
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

// 引数 1 をカラー処理に設定する。
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,
       D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE);

転送先アルファ ブレンディングをサポートしていないディスプレイ アダプタは、通常マルチ テクスチャ ブレンディングをサポートしていないので、この例では、すべての 3D アクセラレータ カードで使用できるライト マップを最初のテクスチャとして設定している。また、この例では、テクスチャのブレンディング ステージに対するカラー処理を設定して、テクスチャ データをプリミティブの既存の色とブレンドしている。その次に、入力データとして最初のテクスチャとプリミティブの既存の色を選択している。