次の方法で共有


モノクロ ライト マップ (Direct3D 9)

一部の古い 3D アクセラレータ ボードは、宛先ピクセルのアルファ値を使ったテクスチャ ブレンドをサポートしていません。 詳細については、「 アルファ テクスチャ ブレンド (Direct3D 9)」 を参照してください。 これらのアダプターは多くの場合、複数テクスチャ ブレンドもサポートしていません。 アプリケーションがこのようなアダプターで実行されている場合、マルチパス テクスチャ ブレンドを使ってモノクロ ライト マッピングを実行できます。

モノクロ ライト マッピングを実行するため、アプリケーションはライト マップ テクスチャのアルファ データに照明情報を格納します。 アプリケーションは、Direct3D のテクスチャ フィルタリング機能を使って、プリミティブのイメージ内の各ピクセルからライト マップ内の対応するテクセルへのマッピングを実行します。 また、ソース ブレンド要素を対応するテクセルのアルファ値に設定します。

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

// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface and that lptexLightMap is a valid
// pointer to a texture that contains monochrome light map data.

// Set the light map texture as the current texture.
d3dDevice->SetTexture(0, lptexLightMap);

// Set the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

// Set argument 1 to the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,
                                D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE);

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

テクスチャを使用したライト マッピング