Platform SDK: DirectX |
一般に、カラー ライティング マップを使用すれば、3D シーンをよりリアルにレンダリングできる。カラー ライティング マップは、ライティング情報としてライト マップのRGB データを使用する。
次の C++ コードは、RGB 色データを使用したライト マッピングを示す。
// この例では、lpD3DDev は IDirect3DDevice7 インターフェイスへの有効なポインタで、 // lptexLightMap は RGB ライト マップ データを含むテクスチャへの // 有効なポインタであるとする。 // ライト マップ テクスチャを最初のテクスチャとして設定する。 lpD3DDev->SetTexture(0, lptexLightMap); lpD3DDev->SetTextureStageState(0,D3DTSS_COLOROP, D3DTOP_MODULATE); lpD3DDev->SetTextureStageState(0,D3DTSS_COLORARG1, D3DTA_TEXTURE); lpD3DDev->SetTextureStageState(0,D3DTSS_COLORARG2, D3DTA_DIFFUSE);
この例では、ライト マップを最初のテクスチャとして設定している。その次に、最初のブレンディング ステージのステートを設定して、入力テクスチャ データを調整している。また、最初のテクスチャとプリミティブのカレント カラーを調整処理用の引数として使用している。
次の Visual Basic コードは、RGB 色データを使用したライト マッピングを示す。
' この例では、D3DDev は Direct3DDevice7 オブジェクトへの有効な参照で、 ' texLightMap は RGB ライト マップ データを含む DirectDrawSurface7 テクスチャ サーフェスへの '有効なポインタであるとする。 ' ライト マップ テクスチャを最初のテクスチャとして設定する。 Call d3dDev.SetTexture(0, texLightMap) Call d3dDev.SetTextureStageState(0, D3DTSS_COLOROP, _ D3DTOP_MODULATE ); Call d3dDev.SetTextureStageState(0, D3DTSS_COLORARG1, _ D3DTA_TEXTURE); Call d3dDev.SetTextureStageState(0, D3DTSS_COLORARG2, _ D3DTA_DIFFUSE);
この例では、ライト マップを最初のテクスチャとして設定している。その次に、最初のブレンディング ステージのステートを設定して、入力テクスチャ データを調整している。また、最初のテクスチャとプリミティブのカレント カラーを調整処理用の引数として使用している。