博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

浅谈alpha混合(融合技术)

Posted on 2011-04-08 18:12  +石头+  阅读(754)  评论(0)    收藏  举报

对于一个顶点来说,有三种方式可以添加颜色。

  1. 顶点结构中包含有颜色
  2. 材质和光照
  3. 纹理

    //制定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);