|
问题出现在我绘制粒子的时候它把我的地形问题的纹理也混合上去了。
粒子渲染前的状态设计:
//关闭灯光
m_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
//m_pDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
m_pDevice->SetRenderState(D3DRS_POINTSPRITEENABLE,true);//指定当前实体将贴图设置到点精灵
m_pDevice->SetRenderState(D3DRS_POINTSCALEENABLE,true);
// m_pDevice->SetRenderState(D3DRS_POINTSIZE,FtoDw(10.0f));
// m_pDevice->SetRenderState(D3DRS_POINTSIZE_MIN,FtoDw(0.0f));
//距离系数
m_pDevice->SetRenderState(D3DRS_POINTSCALE_A,FtoDw(0.0f));
m_pDevice->SetRenderState(D3DRS_POINTSCALE_B,FtoDw(0.0f));
m_pDevice->SetRenderState(D3DRS_POINTSCALE_C,FtoDw(1.f));
m_pDevice->SetTextureStageState( 0 , D3DTSS_COLOROP, D3DTOP_MODULATE );
m_pDevice->SetTextureStageState( 0 , D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pDevice->SetTextureStageState( 0 , D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAOP, D3DTOP_MODULATE );
m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
m_pDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
// m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
// m_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
m_pDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
//m_pDevice->SetRenderState( D3DRS_ZENABLE , false );
m_pDevice->SetRenderState( D3DRS_ZWRITEENABLE , false );
地形渲染设计:
m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, false);
m_pd3dDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
m_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
m_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
m_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
m_pd3dDevice->SetTexture(0, m_pTex[0]);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
m_pd3dDevice->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
m_pd3dDevice->SetSamplerState(1, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
m_pd3dDevice->SetSamplerState(1, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);
m_pd3dDevice->SetTexture(1, m_pTex[1]);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_ADDSIGNED);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
地形用了多纹理混合,粒子绘制顶点格式为(D3DFVF_XYZ | D3DFVF_PSIZE | D3DFVF_DIFFUSE)。
我在想地形多纹理混合是不是有什么状态搞错了。
顺便问一下,在做混合是不关灯光的后果是什么,我怎么有时候关不关灯光好像结果没什么不一样。
|
|