Partager via


Cartes de lumière diffuse (Direct3D 9)

Lorsqu’elles sont éclairées par une source de lumière, les surfaces mates affichent une réflexion diffuse de la lumière. La luminosité de la lumière diffuse dépend de la distance par rapport à la source de lumière et de l’angle entre la normale de surface et le vecteur de direction de la source de lumière. Les effets d’éclairage diffus simulés par des calculs d’éclairage ne produisent que des effets généraux.

Votre application peut simuler un éclairage diffus plus complexe avec des cartes de lumière de texture. Pour ce faire, ajoutez la carte de lumière diffuse à la texture de base, comme illustré dans l’exemple de code C++ suivant.

// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface.
// lptexBaseTexture is a valid pointer to a texture.
// lptexDiffuseLightMap is a valid pointer to a texture that contains 
// RGB diffuse light map data.

// Set the base texture.
d3dDevice->SetTexture(0,lptexBaseTexture );

// Set the base texture operation and args.
d3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,
                                D3DTOP_MODULATE );
d3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(0,D3DTSS_COLORARG2, D3DTA_DIFFUSE );

// Set the diffuse light map.
d3dDevice->SetTexture(1,lptexDiffuseLightMap );

// Set the blend stage.
d3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT );

Mappage de lumière avec textures