Microsoft DirectX 8.0 (Visual Basic) |
一部の古い 3D アクセラレータ ボードでは、転送先ピクセルのアルファ値を使用するテクスチャ ブレンディングをサポートしていない場合がある。詳細については、「アルファ テクスチャ ブレンディング」を参照すること。これらのアダプタでは、一般にマルチ テクスチャ ブレンディングもサポートしていない。このようなアダプタでアプリケーションを実行する場合は、マルチパス テクスチャ ブレンディングを使用してモノクロ ライト マッピングを実行できる。
モノクロ ライト マッピングを実行するには、アプリケーションでライティング情報をライト マップ テクスチャのアルファ データに格納する。アプリケーションは、Microsoft® Direct3D® のテクスチャ フィルタリング能力を使用して、プリミティブの画像の各ピクセルからライト マップの対応するテクセルへのマッピングを実行する。プログラムで、転送元ブレンディング係数を対応するテクセルのアルファ値に設定する。
次の Microsoft® Visual Basic® コードは、アプリケーションでテクスチャをモノクロ ライト マップとして使用する方法を示している。
' この例では、D3DDevice は Direct3DDevice8 オブジェクトへの有効な参照であり、 ' texLightMap はモノクロ ライト マップ データを含む Direct3DTexture8 オブジェクトへの ' 有効な参照であると仮定している。 ' ライト マップ テクスチャをカレント テクスチャとして設定する。 Call D3DDevice.SetTexture(0, texLightMap) ' カラー処理を設定する。 Call D3DDevice.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1) ' 引数 1 をカラー処理に設定する。 Call D3DDevice.SetTextureStageState(0, D3DTSS_COLORARG1, _ D3DTA_TEXTURE Or D3DTA_ALPHAREPLICATE)
転送先アルファ ブレンディングをサポートしていないディスプレイ アダプタは、通常マルチ テクスチャ ブレンディングをサポートしていないので、この例では、すべての 3D アクセラレータ カードで使用できるライト マップを最初のテクスチャとして設定している。また、この例では、テクスチャのブレンディング ステージに対するカラー処理を設定して、テクスチャ データをプリミティブの既存の色とブレンドしている。その次に、入力データとして最初のテクスチャとプリミティブの既存の色を選択している。