Condividi tramite


Mappe chiare diffuse (Direct3D 9)

Quando è illuminata da una fonte di luce, le superfici opaco mostrano la riflessione di luce diffusa. La luminosità della luce diffusa dipende dalla distanza dalla fonte di luce e dall'angolo tra la superficie normale e il vettore di direzione della fonte di luce. Gli effetti di illuminazione diffusi simulati dai calcoli di illuminazione producono solo effetti generali.

L'applicazione può simulare un'illuminazione diffusa più complessa con mappe di luce della trama. Eseguire questa operazione aggiungendo la mappa di luce diffusa alla trama di base, come illustrato nell'esempio di codice C++ seguente.

// 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 );

Mapping di luce con trame