單色光線地圖 (Direct3D 9)

某些舊版 3D 加速板不支援使用 alpha 目的地像素值的紋理混合。 如需詳細資訊 ,請參閱 Alpha 紋理混合 (Direct3D 9) 。 通常這些介面卡也不支援多紋理混合。 如果您的應用程式正在這類的介面卡上執行,就可以使用多重紋理混合來執行單色光線對應。

若要執行單色光線對應,應用程式會將光源資訊儲存在光線對應紋理的 alpha 資料中。 此應用程式使用 Direct3D 的紋理篩選功能,從基本影像中的每個像素對應到光線圖中的對應紋素中。 它將來源混合因素設定為對應紋素的 alpha 值。

下列範例說明應用程式如何使用紋理做為單色光線貼圖:

// This example assumes that d3dDevice is a valid pointer to an
// IDirect3DDevice9 interface and that lptexLightMap is a valid
// pointer to a texture that contains monochrome light map data.

// Set the light map texture as the current texture.
d3dDevice->SetTexture(0, lptexLightMap);

// Set the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

// Set argument 1 to the color operation.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,
                                D3DTA_TEXTURE | D3DTA_ALPHAREPLICATE);

因為不支援目的地 Alpha 混合的顯示器配接器通常不支援多個紋理混合,所以本範例會將光線貼圖設定為第一個紋理,這在所有 3D 快速鍵卡片上都可使用。 範例程式碼會設定紋理混合階段的色彩作業,以將紋理資料與基本型別的現有色彩混合。 然後,它會選取第一個紋理和基本類型的現有色彩作為輸入資料。

具有紋理的光線對應