Blending-fasen maken (Direct3D 9)
Een mengfase is een set textuurbewerkingen en hun argumenten die bepalen hoe patronen worden gemengd. Bij het maken van een blendingfase roepen C++-toepassingen de methode IDirect3DDevice9::SetTextureStageState aan. De eerste aanroep geeft de bewerking op die wordt uitgevoerd. Twee extra aanroepen definiëren de argumenten waarop de bewerking wordt toegepast. Het volgende codevoorbeeld illustreert het maken van een blending-fase.
// 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);
Texel-gegevens in texturen bevatten kleur- en alfawaarden. Toepassingen kunnen afzonderlijke bewerkingen definiëren voor zowel kleur- als alfawaarden in één mengfase. Elke bewerking, kleur en alfa heeft zijn eigen argumenten. Zie D3DTEXTURESTAGESTATETYPEvoor meer informatie.
Hoewel ze geen deel uitmaken van de Direct3D-API, kunt u de volgende macro's invoegen in uw toepassing om de code te verkorten die nodig is om textuurmengingfasen te creëren.
#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 );
Verwante onderwerpen