Sdílet prostřednictvím


Difuzní světlé mapy (Direct3D 9)

Při osvětlení zdrojem světla se matné plochy zobrazují difuzní odraz světla. Jas difuzního světla závisí na vzdálenosti od zdroje světla a úhlu mezi normálním povrchem a vektorem směru zdroje světla. Difuzní světelné efekty simulované pomocí výpočtů osvětlení vytvářejí pouze obecné efekty.

Vaše aplikace může simulovat složitější difuzní osvětlení pomocí texturových světelných map. Uděláte to tak, že přidáte mapu difuzního světla do základní textury, jak je znázorněno v následujícím příkladu kódu C++.

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

mapování světla s texturami