|
|
写了个简单的粒子系统,想让每个粒子的ALPHA 随着时间逐渐减淡,顶点格式如下
struct POINTVERTEX
{
D3DXVECTOR3 v;
D3DXCOLOR color;
static const DWORD FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;
};
对color进行设置时 D3DXCOLOR(r,g,b,a); r,g,b都有效, 只是a完全没效果,无论a是什么值
我怀疑可能是渲染状态的问题,渲染状态如下
RenderState 和背景混合,背景为黑色)
m_pd3dDevice->SetRenderState (D3DRS_ALPHABLENDENABLE, TRUE);
m_pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
m_pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
TextureStageState:(纹理的颜色&ALPHA操作)
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
请各位帮帮忙解决下,谢啦~~
|
|