共用方式為


單色光地圖 (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 快捷鍵卡片。 範例程式代碼會設定紋理混合階段的色彩作業,以將紋理數據與基本色彩混合。 然後,它會選取第一個紋理和基本型別的現有色彩做為輸入數據。

使用紋理 光線對應