Dela via


Skapa blandningssteg (Direct3D 9)

En blandningsfas är en uppsättning strukturåtgärder och deras argument som definierar hur texturer blandas. När du skapar en blandningsfas anropar C++-program metoden IDirect3DDevice9::SetTextureStageState. Det första anropet anger den åtgärd som utförs. Två ytterligare anrop definierar de argument som åtgärden tillämpas på. Följande kodexempel illustrerar skapandet av en blandningsfas.

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

Texeldata i texturer innehåller färg- och alfavärden. Program kan definiera separata åtgärder för både färg- och alfavärden i en enda blandningsfas. Varje åtgärd, färg och alfa har egna argument. Mer information finns i D3DTEXTURESTAGESTATETYPE.

Även om du inte är en del av Direct3D-API:et kan du infoga följande makron i ditt program för att förkorta koden som krävs för att skapa texturblandningssteg.

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

Texturblandning