(Direct3D 9) 建立混合階段
混合階段是一組定義紋理混合方式的紋理作業及其引數。 製作混合階段時,C++ 應用程式會叫用 IDirect3DDevice9::SetTextureStageState 方法。 第一次呼叫會指定執行的作業。 兩個額外的調用會定義套用作業的引數。 下列程式碼範例說明如何建立混合階段。
// 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);
紋理中的紋素資料包含色彩和 Alpha 值。 應用程式可以在單一混合階段中定義色彩和 Alpha 值的個別作業。 每個作業、色彩和 Alpha 都有自己的引數。 如需詳細資訊,請參閱 D3DTEXTURESTAGESTATETYPE。
雖然不是 Direct3D API 的一部分,但您可以將下列宏插入應用程式中,以縮寫建立紋理混合階段所需的程式碼。
#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 );
相關主題