DirectX9.0 (10) Alpha混合

引言

            在前面几篇博文中,已经陆续讲解了光照处理,和纹理映射的内容。现在来讲解一些更有趣的东西。Alpha混合,总是出现在各种各样的游戏中。我们无时无刻都在和它进行打交道,所以很有必要掌握如何进行Alpha混合,以及如何通过Alpha混合来做到透明效果。


混合方程

          进行Alpha混合时,我们总是会利用混合方程来进行混合。一般来说,混合方程总是如下所示:

           OutputPixel =  SourcePixel * SourceBlendFactor + DestPixel * DestBlendFactor

          这个方程很简单,而且其中的"+"操作符,也能够在DirectX中,通过设置渲染状态来改变这个值。我们进行Alpha混合的时候,就是设置这些值来对Alpha混合进行控制。

          在默认情况下,Alpha混合方程中的操作符总是“+”,它在DirectX中使用如下的常量来定义:

           D3DBLENDOP_ADD

          除了这个操作符之外,还有下面的一些操作符:

          D3DBLENDOP_SUBTRACT 表示操作符是“-”, 即混合方程为     OutputPixel =  SourcePixel * SourceBlendFactor - DestPixel * DestBlendFactor ;

          D3DBLENDOP_REVSUBTRACT, 混合方程为 : OutputPixel =  DestPixel * DestBlendFactor - SourcePixel * SourceBlendFactor ;

          D3DBLENDOP_MIN , 混合方程为 : OutputPiexl = min(SourcePixel * SourceBlendFactor, DestPixel * DestBlendFactor)  ;

          D3DBLENDOP_MAX, 混合方程为:  OutputPiexl = max(SourcePixel * SourceBlendFactor, DestPixel * DestBlendFactor) ;

          我们可以通过调用下面的函数来设置这些混合操作符:

          m_pDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_SUBTRACT) ;

          这些操作符的具体含义很难察觉,它们只是定义了进行混合计算时的不同操作,使用不同的操作符可以达到不同的效果,需要读者自己积累经验来使用。

           在默认情况下,DirectX 9.0是不进行Alpha混合操作的,所以我们可以通过如下的代码来开启Alhpa混合:

          m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true) ;


混合因子

           在上面的混合公式中,SourceBlendFactor和DestBlendFactor称为混合因子。我们可以通过调用下面的两个函数来设置这两个不同的因子:

           m_pDevice->SetRenderState(D3DRS_SRCBLEND, source) ;

           m_pDevice->SetRenderState(D3DRS_DESTBLEND, dest) ;

          上面的source和dest可以是下面的任何值:

  • D3DBLEND_ZERO : 表示混合因子为(0,0,0,0)
  • D3DBLEND_ONE : 表示混合因子为(1,1,1,1)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值