[Direct3D 9.0]第七章 混合

时间:2014-05-01 08:00:39   收藏:0   阅读:508

混合

像素的混合,将几种像素合成新的像素。

如书中木箱和透明茶壶的图。

bubuko.com,布布扣

 

方法就是通过一定的公式,将前后两个像素值混合为一个新的像素值。该公式如下

bubuko.com,布布扣

上面的所有变量都是一个4D 颜色向量(r,g,b,a),并且符号是表示分量相乘。

混合默认是被关闭的;你能够通过设置D3DRS_ALPHABLENDENABLE渲染状态为true来开启它:

bubuko.com,布布扣

通过设置设置D3DRS_SRCBLEND和D3DRS_DESTBLEND渲染状态来分别设置源混合要素和目的混合要素。

bubuko.com,布布扣

这里Source和Destination能够使用下面混合要素中的一个:

源和目的混合要素的默认值分别是D3DBLEND_SRCALPHA和D3DBLEND_INVSRCALPHA。

透明度

在以前的章节中我们忽略了颜色顶点和材质中的alpha 部分,那是因为当时它并不是必须的。现在它首先被用在混合中。Alpha 部分主要是用来指定像素的透明等级。我们为每个像素的alpha 部分保留8 位,alpha 的有效值在[0,255]范围内,[0,255]代表不透明度[0%,100%]。因此,像素的alpha 为0 时,表示完全透明,像素的alpha 为128 时,表示50%透明,像素的alpha 为255 时,表示完全不透明。为了让alpha部分描述像素的透明等级,我们必须设置源混合要素为D3DBLEND_SRCALPHA以及目的混合要素为D3DBLEND_INVSRCALPHA。这些值碰巧也是被默认设置的。

指定Alpha资源

默认情况下,假如设置一个有alpha 通道的纹理,alpha 值从在alpha 通道中获得。假如没有alpha通道,那么alpha 值是通过顶点颜色获得。然而,你能够通过下面的渲染状态来指定使用哪一个资源:

bubuko.com,布布扣

[Direct3D 9.0]第七章 混合,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!