Condividi tramite


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

Fusione di trame