2011-12-03 47 views
1

一直在努力尋找解決方案,但結果非常糟糕。如何在我的DirectX 9中的紋理不透明度?

基本上我想繪製一個紋理(它由2個三角形組成,所以它是一個四邊形),並使它們具有alpha值(0-255,但0-1也可以)。這是爲了當我希望的時候能夠淡入淡出效果。

回答

2

發現我的答案是: Link to Source

DWORD AlphaValue; 
AlphaValue = D3DCOLOR_ARGB(100,255,255,255); 

mpDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); 
mpDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); 
mpDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); 
mpDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); 
mpDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); 

mpDevice->SetTextureStageState(0, D3DTSS_CONSTANT, AlphaValue); 
mpDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CONSTANT); 
mpDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); 
mpDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); 

pMesh->Draw(); 
+0

我照你說的,好像設備不走'constant'考慮,只關心網格的頂點顏色。 – zionpi