首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

哪位救救小弟我啊 direct3d 9中多重纹理混合关于ALPHA的有关问题

2012-09-03 
哪位大虾救救我啊 direct3d 9中多重纹理混合关于ALPHA的问题情况是这样的:小弟想给一个四边形加上alpha贴

哪位大虾救救我啊 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();

[解决办法]
没事了那就结帐吧。。。。

热点排行