Partager via


Cartes lumineuses diffuses (Direct3D 9)

Lorsqu’ils sont éclairés par une source de lumière, les surfaces mats affichent une réflexion lumineuse diffuse. La luminosité de la lumière diffuse dépend de la distance entre la source de lumière et l’angle entre la surface normale et le vecteur de direction de la source de lumière. Les effets d’éclairage diffus simulés par les calculs d’éclairage produisent uniquement 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 clair avec des textures