Diffúz világos térképek (Direct3D 9)
Ha egy fényforrás megvilágítja, a matt felületek diffúz fényvisszaverődést jelenítenek meg. A diffúz fény fényereje a fényforrás távolságától és a normál felület és a fényforrás irányvektora közötti szögtől függ. A világítási számítások által szimulált diffúz megvilágítási hatások csak általános hatásokat eredményeznek.
Az alkalmazás összetettebb diffúz világítást szimulálhat a textúra fénytérképeivel. Ezt úgy teheti meg, hogy hozzáadja a diffúz fénytérképet az alapmintához, ahogy az a következő C++ kód példában is látható.
// 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 );
Kapcsolódó témakörök