當由光源照亮時,閃亮的物件 -- 那些使用高反射材料的物件 - 接收反射亮點。 在某些情況下,光源模組所產生的反射醒目提示不正確。 為了產生更具吸引力的醒目提示,許多 Direct3D 應用程式會將反射光線對應套用至基本類型。
若要執行反射光線對應,請將反射光圖新增至基本紋理,然後調整 RGB 光圖(乘以結果)。
下列程式代碼範例說明此程式C++。
// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface.
// lptexBaseTexture is a valid pointer to a texture.
// lptexSpecLightMap is a valid pointer to a texture that contains RGB
// specular light map data.
// lptexLightMap is a valid pointer to a texture that contains RGB
// light map data.
// Set the base texture.
d3dDevice->SetTexture(0, lptexBaseTexture );
// Set the base texture operation and arguments.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE );
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
// Set the specular light map.
d3dDevice->SetTexture(1, lptexSpecLightMap);
// Set the specular light map operation and args.
d3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADD );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT );
// Set the RGB light map.
d3dDevice->SetTexture(2, lptexLightMap);
// Set the RGB light map operation and arguments.
d3dDevice->SetTextureStageState(2,D3DTSS_COLOROP, D3DTOP_MODULATE);
d3dDevice->SetTextureStageState(2,D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3dDevice->SetTextureStageState(2,D3DTSS_COLORARG2, D3DTA_CURRENT );
相關主題