Mapas de luz monocromáticos (Direct3D 9)
Algumas placas aceleradoras 3D mais antigas não oferecem suporte à mesclagem de textura com o valor de alfa do pixel de destino. Consulte Combinação de textura alfa (Direct3D 9) para obter mais informações. Em geral, esses adaptadores também não oferecem suporte à mistura de múltipla textura. Se o app for executado em um adaptador desse tipo, ele pode usar a mistura da textura de passagem múltipla para executar o mapeamento de luzes monocromáticas.
Para executar o mapeamento de luzes monocromáticas, um app armazena as informações de iluminação nos dados de alfa das texturas de mapa de luzes. O app usa os recursos de filtragem de textura do Direct3D para realizar um mapeamento de cada pixel na imagem do primitivo para um texel correspondente no mapa de luz. Ele define o fator de mesclagem de origem para o valor de alfa do texel correspondente.
O exemplo a seguir ilustra como um aplicativo pode usar uma textura como um mapa de luz monocromático:
// 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);
Como adaptadores de exibição que não dão suporte à mesclagem alfa de destino geralmente não dão suporte à mesclagem de várias texturas, este exemplo define o mapa de luz como a primeira textura, que está disponível em todas as placas de acelerador 3D. O código de exemplo define a operação de cor para o estágio de mesclagem da textura para combinar os dados de textura com a cor existente da primitiva. Em seguida, ele seleciona a primeira textura e a cor existente da primitiva como os dados de entrada.
Tópicos relacionados