Cartes lumineuses monochromes (Direct3D 9)

Certaines cartes accélérateurs 3D plus anciennes ne prennent pas en charge le mélange de textures à l’aide de la valeur alpha du pixel de destination. Pour plus d’informations, consultez Alpha Texture Blending (Direct3D 9). Ces adaptateurs ne prennent généralement pas en charge le mélange de textures multiples. Si votre application s’exécute sur un adaptateur comme celui-ci, elle peut utiliser le mélange de textures multipass pour effectuer un mappage de lumière monochrome.

Pour effectuer un mappage de lumière monochrome, une application stocke les informations d’éclairage dans les données alpha de ses textures de carte de lumière. L’application utilise les fonctionnalités de filtrage de textures de Direct3D pour effectuer un mappage de chaque pixel de l’image de la primitive à un texel correspondant dans la carte de lumière. Il définit le facteur de fusion source sur la valeur alpha du texel correspondant.

L’exemple suivant illustre comment une application peut utiliser une texture comme carte de lumière monochrome :

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

Étant donné que les adaptateurs d’affichage qui ne prennent pas en charge la fusion alpha de destination ne prennent généralement pas en charge le mélange de plusieurs textures, cet exemple montre comment définir la carte de lumière en tant que première texture, disponible sur toutes les cartes accélérateurs 3D. L’exemple de code définit l’opération de couleur pour l’étape de fusion de la texture afin de fusionner les données de texture avec la couleur existante de la primitive. Il sélectionne ensuite la première texture et la couleur existante de la primitive comme données d’entrée.

Mappage de lumière avec textures