对于一个顶点来说,有三种方式可以添加颜色。
- 顶点结构中包含有颜色
- 材质和光照
- 纹理
//制定Alpha来源
Device->SetRenderState(D3DRS_TEXTUREFACTOR, col); //factor为设置一种颜色,存储在内存中,不是物体本身的颜色
Device ->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR); //设置第一种颜色为Factor
//这里也可以设置为纹理的颜色等等 Device ->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
Device ->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); //设置第二种颜色为物体本身的颜色
Device ->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); //把颜色一二用MODULATE算法混合
//颜色混合也可以直接选定是颜色一或二->Device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);// 这里为选择的颜色一
Device ->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); //开启Alpha混合
Device ->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); //设置源融合因子
Device ->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR); //设置目标融合因子
mMesh->DrawSubset(0);
Device ->SetRenderState(D3DRS_LIGHTING, FALSE);
Device ->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
浙公网安备 33010602011771号