Keverési szakaszok létrehozása (Direct3D 9)
A keverési fázis egy olyan textúraművelet-készlet és annak paraméterei, amelyek meghatározzák a textúrák keverését. Keverési fázis létrehozásakor a C++ alkalmazások meghívják az IDirect3DDevice9::SetTextureStageState metódust. Az első hívás megadja a végrehajtott műveletet. Két további meghívás határozza meg azokat az argumentumokat, amelyekre a művelet vonatkozik. Az alábbi példakód egy keverési szakasz létrehozását szemlélteti.
// 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);
A textúrákban lévő Texel-adatok szín- és alfaértékeket tartalmaznak. Az alkalmazások külön műveleteket határozhatnak meg szín- és alfaértékekhez egyetlen keverési fázisban. Minden műveletnek, színnek és alfanak saját argumentumai vannak. További részletekért lásd: D3DTEXTURESTAGESTATETYPE.
Bár nem része a Direct3D API-nak, az alábbi makrókat beszúrhatja az alkalmazásba, hogy rövidíthesse a textúra-keverési szakaszok létrehozásához szükséges kódot.
#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 );
Kapcsolódó témakörök