如何在directx 9中对我的纹理设置不透明度?

如何在directx 9中对我的纹理设置不透明度?,directx,opacity,alpha-transparency,Directx,Opacity,Alpha Transparency,我们一直在努力寻找解决办法,但结果很糟糕 基本上,我想画一个纹理(它由两个三角形组成,所以它是一个四边形),并使它们具有alpha值(0-255,但0-1也可以)。这样我就可以在我希望的时候实现淡入淡出效果。找到了我的答案: 我照你说的做了,似乎设备没有考虑到常数,它只关心网格的顶点颜色。 DWORD AlphaValue; AlphaValue = D3DCOLOR_ARGB(100,255,255,255); mpDevice->SetTextureStageState(0, D3

我们一直在努力寻找解决办法,但结果很糟糕

基本上,我想画一个纹理(它由两个三角形组成,所以它是一个四边形),并使它们具有alpha值(0-255,但0-1也可以)。这样我就可以在我希望的时候实现淡入淡出效果。

找到了我的答案:


我照你说的做了,似乎设备没有考虑到
常数,它只关心网格的顶点颜色。
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();