|
我为D3D程序添加了粒子系统模拟下雪天,设置状态如下
m_pDevice->SetRenderState( D3DRS_LIGHTING, false );
m_pDevice->SetRenderState( D3DRS_POINTSPRITEENABLE, true );
m_pDevice->SetRenderState( D3DRS_POINTSCALEENABLE, true );
m_pDevice->SetRenderState( D3DRS_POINTSIZE, VSchool::FToDW(m_fSize) );
m_pDevice->SetRenderState( D3DRS_POINTSIZE_MIN, VSchool::FToDW(0.0f) );
m_pDevice->SetRenderState( D3DRS_POINTSCALE_A, VSchool::FToDW(0.0f) );
m_pDevice->SetRenderState( D3DRS_POINTSCALE_B, VSchool::FToDW(0.0f) );
m_pDevice->SetRenderState( D3DRS_POINTSCALE_C, VSchool::FToDW(2.0f) );
//用纹理的颜色作为alpha来源
m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, : 3DTOP_SELECTARG1 );
m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
m_pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
D3DRS_POINTSPRITEENABLE 这个状态设为true不是可以实现粒子远小近大的效果吗?为何我程序里显示的粒子大小全是一样的?这是怎么回事?效果图如下 |
|