Freigeben über


Erstellen von Blendingstufen (Direct3D 9)

Eine Mischphase besteht aus einer Reihe von Texturvorgängen und deren Argumenten, die definieren, wie Texturen gemischt werden. Beim Erstellen einer Mischphase rufen C++-Anwendungen die IDirect3DDevice9::SetTextureStageState-Methode auf. Der erste Aufruf gibt den vorgang an, der ausgeführt wird. Zwei zusätzliche Aufrufe definieren die Argumente, auf die der Vorgang angewendet wird. Im folgenden Codebeispiel wird die Erstellung einer Mischphase veranschaulicht.

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

Texeldaten in Texturen enthalten Farb- und Alphawerte. Anwendungen können separate Vorgänge für Farb- und Alphawerte in einer einzigen Mischphase definieren. Jeder Vorgang, jede Farbe und jedes Alpha hat seine eigenen Argumente. Weitere Informationen finden Sie unter D3DTEXTURESTAGESTATETYPE.

Obwohl sie nicht Teil der Direct3D-API sind, können Sie die folgenden Makros in Ihre Anwendung einfügen, um den Code abzukürten, der zum Erstellen von Texturmischungsphasen erforderlich ist.

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

Texturmischung