DX多纹理问题
//打开Alpah测试
m_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
//设置透明度来源 ---由纹理得到alpha值
m_pDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
m_pDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);
//透明度设置
m_pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
m_pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
怎么理解这几句话,以前没看懂现在还是没看懂,大家帮忙解答一下.
[解决办法]
不是已注释了吗~~~
第一句先设置渲染打开AlphaBlending
下面取Alpha做Blending, 注意操作完后再设置关闭AlphaBlending
加上
//关闭Alpah测试
m_pDevice-> SetRenderState(D3DRS_ALPHABLENDENABLE,FALSE);
[解决办法]
m_pDevice-> SetRenderState(D3DRS_ALPHABLENDENABLE,true); //打开Alpah测试
//设置透明度来源 ---由纹理得到alpha值
m_pDevice-> SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); // 设置渲染阶段0输出的Alpha部分使用输入的纹理
m_pDevice-> SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1); // 设置渲染阶段1的输出的Alpha采用渲染阶段0输出的纹理
//透明度设置
m_pDevice-> SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA); // 这两句的意思就是设置这个公式:
m_pDevice-> SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA); // 目标颜色=源颜色*alpha+目标颜色*(1-alpha)
[解决办法]
这是ALPHA混合,跟ALPHA测试不一样.
D3DRS_ALPHABLENDENABLE
D3DRS_ALPHATESTENABLE
意思很简单,这些在D3D自带的帮助文档都有