|

楼主 |
发表于 2010-9-13 19:45:00
|
显示全部楼层
Re:[DX9]谁可以设置一个带有半透明色的png图片的透明度?
解决了:
完整的设置如下
C/C++ code
pd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
pd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
pd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
//使定点颜色的alpha和帖图的alpha相乘
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
C/C++ code
顶点里面的diffuse含有aphpha分量
struct Custom_Vertex
{
D3DXVECTOR4 pos_rhw;
D3DCOLOR diffuse;
D3DXVECTOR2 uv;
};
const DWORD fvf = D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1;
Custom_Vertex verts[] =
{
{D3DXVECTOR4(0.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,1.0)},
{D3DXVECTOR4(0.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,0.0)},
{D3DXVECTOR4(400.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,0.0)},
{D3DXVECTOR4(0.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(0.0,1.0)},
{D3DXVECTOR4(400.0f,0.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,0.0)},
{D3DXVECTOR4(400.0f,300.0f,0.0f,1.0), D3DCOLOR_ARGB(125,255,255,255) ,D3DXVECTOR2(1.0,1.0)}
};
修改这个alpha可以指定透明度。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:现征集自愿测试者,测试我们的一个在线培训系统,有愿意参加的请按照下面格式填写信息
xingzhe2001
(行者)
等 级:
9
#3楼 得分:0回复于:2010-09-13 14:18:42如果你的颜色要频繁修改,建议用这个
C/C++ code
//这个颜色就会和你的纹理混合
pd3dDevice->SetTextureStageState(0, D3DTSS_CONSTANT, D3DCOLOR_ARGB(128,256,256,256));
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CONSTANT);
pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
---xingzhe2001 |
|