|
|

楼主 |
发表于 2005-11-16 21:27:00
|
显示全部楼层
Re:关于透明渲染,以及TextureStageState的几个疑问
//TextureStage0
pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
将纹理的颜色不动的给下一层。
//TextureStage1
pd3dDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_BLENDDIFFUSEALPHA);
pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
将纹理的的颜色和上次的颜色进行普通ALPHA渲染
//TextureStage2
pd3dDevice->SetTextureStageState(2,D3DTSS_COLOROP,D3DTOP_ADD);
pd3dDevice->SetTextureStageState(2,D3DTSS_COLORARG1,D3DTA_DIFFUSE);
pd3dDevice->SetTextureStageState(2,D3DTSS_COLORARG2,D3DTA_CURRENT);
pd3dDevice->SetTextureStageState(2,D3DTSS_ALPHAOP,D3DTOP_DISABLE);
将D3D顶点的DIFFUSE颜色和上次的颜色层进行相加。
这里面,1层和2层的操作都带2个参数,第一个参数就是从前面的纹理层得到数据,第二个参数就是从当前的纹理层得到数据是么? |
|