|
|
假设有
IDirect3DTexture9* pTecture1;
IDirect3DTexture9* pTecture2;
pTecture1和pTecture2是用photoshop制作的tga图片
我现在想使我的模型的透明度即要由pTecture1的alpha通道控制有要由pTecture2的alpha通道控制应该怎样设置?
//**************************
我知道可以这样写
pd3dDevice->SetTexture(0,pTecture1); //1
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_ADD); //2
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); //3
pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE); //4
pd3dDevice->SetTexture(1,pTecture2); //5
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_ADD); //6
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); //7
pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG2,D3DTA_CURRENT); //8
如果按照这样书写的话纹理层0的alpha通道的值是pTecture1的alpha通道的值加上模型材质的alpha通道的值,
纹理层1的alpha通道的值是pTecture1的alpha通道的值加上pTecture2的alpha通道的值.
但是好象纹理层1的alpha通道不能使模型变得半透明,纹理层0的alpha通道可以(我实验的,不知道有没有错误)
但是我想实现的效果是要模型的透明度受两个纹理的alpha通道控制,如果把第4行的"D3DTA_DIFFUSE"改为"D3DTA_CURRENT"的话又不行,因为前边一层纹理根本不存在. |
|