哪位大虾救救我啊 direct3d 9中多重纹理混合关于ALPHA的问题
情况是这样的:
小弟想给一个四边形加上alpha贴图,同时通过混合贴图alpha值和设定好的和时间相关的参数实现动态透明效果,可是失败了,看网上有说多重纹理时贴图的alpha值不能再进行混合,这是真的吗?如果是真的,那该怎么实现我想要的效果?
我想要的效果就是贴图有一部分永远是透明的,其它地方的透明度随时间变化。
pixel shader不知道行吗,反正对它没啥感觉,最好能用其它方法,小弟感激不尽!
g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
g_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
g_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
timer=clock();
g_pDevice->SetFVF(D3DFVF_TEXVERTEX);
g_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1,D3DTA_TEXTURE );
g_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG1,D3DTA_TFACTOR );
g_pDevice->SetTextureStageState( 1, D3DTSS_ALPHAARG2,D3DTA_CURRENT );
g_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
float m=float(clock()-timer);
m=m/ms;
g_pDevice->SetRenderState(D3DRS_TEXTUREFACTOR,D3DXCOLOR(0,0,0,m));
g_pDevice->BeginScene();
g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
g_pDevice->EndScene();
[解决办法]
没事了那就结帐吧。。。。