Création d’étapes de fusion (Direct3D 9)

Une étape de fusion est un ensemble d’opérations de texture et de leurs arguments qui définissent la façon dont les textures sont fusionnées. Lors de la création d’une étape de fusion, les applications C++ appellent la méthode IDirect3DDevice9::SetTextureStageState . Le premier appel spécifie l’opération qui est effectuée. Deux appels supplémentaires définissent les arguments auxquels l’opération est appliquée. L’exemple de code suivant illustre la création d’une étape de fusion.

// This example assumes that lpD3DDev is a valid pointer to an
// IDirect3DDevice9 interface.

// Set the operation for the first texture.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD);

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

// Set argument 2 to the iterated diffuse color.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);

Les données Texel dans les textures contiennent des valeurs de couleur et alpha. Les applications peuvent définir des opérations distinctes pour les valeurs de couleur et alpha dans une seule étape de fusion. Chaque opération, couleur et alpha a ses propres arguments. Pour plus d’informations, consultez D3DTEXTURESTAGESTATETYPE.

Bien que ne faisant pas partie de l’API Direct3D, vous pouvez insérer les macros suivantes dans votre application pour abréger le code requis pour créer des étapes de fusion de textures.

#define SetTextureColorStage( dev, i, arg1, op, arg2 )     \
    dev->SetTextureStageState( i, D3DTSS_COLOROP, op);      \
    dev->SetTextureStageState( i, D3DTSS_COLORARG1, arg1 ); \
    dev->SetTextureStageState( i, D3DTSS_COLORARG2, arg2 );

#define SetTextureAlphaStage( dev, i, arg1, op, arg2 )     \
    dev->SetTextureStageState( i, D3DTSS_ALPHAOP, op);      \
    dev->SetTextureStageState( i, D3DTSS_ALPHAARG1, arg1 );  \
    dev->SetTextureStageState( i  D3DTSS_ALPHAARG2, arg2 );

Fusion de textures