Creazione di fasi di fusione (Direct3D 9)
Una fase di fusione è un set di operazioni di trama e i relativi argomenti che definiscono la modalità di fusione delle trame. Quando si esegue una fase di fusione, le applicazioni C++ richiamano il metodo IDirect3DDevice9::SetTextureStageState . La prima chiamata specifica l'operazione eseguita. Due chiamate aggiuntive definiscono gli argomenti a cui viene applicata l'operazione. Nell'esempio di codice seguente viene illustrata la creazione di una fase di fusione.
// 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);
I dati texel nelle trame contengono valori di colore e alfa. Le applicazioni possono definire operazioni separate per i valori di colore e alfa in una singola fase di fusione. Ogni operazione, colore e alfa ha i propri argomenti. Per informazioni dettagliate, vedere D3DTEXTURESTAGESTATETYPE.
Anche se non fa parte dell'API Direct3D, è possibile inserire le macro seguenti nell'applicazione per abbreviatare il codice necessario per la creazione di fasi di blend di trama.
#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 );
Argomenti correlati