10.Alpha混合

10.Alpha混合

ID:47709776

大小:979.50 KB

页数:16页

时间:2019-10-29

10.Alpha混合_第1页
10.Alpha混合_第2页
10.Alpha混合_第3页
10.Alpha混合_第4页
10.Alpha混合_第5页
资源描述:

《10.Alpha混合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、10.Alpha混合MicrosoftDirect3D在绘制场景时可以整合各种来源的色彩信息:顶点颜色、目前材质、贴图对映以及原先写入绘制画面的颜色。Direct3D不光只是选择这些来源之一的色彩,而是混合其中数种颜色。一个叫做alpha的系数可以用来计算混合运算时的权重。alpha值可以储存在顶点、材质以及贴图对映中。Alpha通常被视作不透明的程度;也就是alpha值0表示完全透明,alpha值1表示完全不透明,而介于0到1之间的alpha值表示某种程度的半透明。藉由alpha混合的使用,您可以建立有趣而真实的视觉效果。与画面缓冲区混合 当Direct3D绘制一个形状时,会依据该

2、形状所用贴图、材质以及打光信息的色彩来计算各个像素的颜色。您可以用alpha混合来结合形状的颜色和原先储存在画面缓冲区(来自另一个形状或清除用的颜色,后者也就是用IDirect3DDevice7::Clear方法清除场景所用的颜色)中像素的色彩。利用这种形式的alpha混合,您可以仿真半透明对象、结合两种影像,也可以加入力场、火焰、电浆束、以及光影对映之类的特效。alpha信息可以储存在多边形的顶点结构或贴图对映的各个贴图图素中。Direct3D会用下列公式来计算所绘制形状中各像素的最终色彩:FinalColor=SourcePixelColor·SourceBlendFactor+

3、DestPixelColor·DestBlendFactor公式中所用的变量定义如下:· FinalColor 输出到绘制绘图页的像素颜色 · SourcePixelColor 目前形状计算出的像素颜色 · SourceBlendFacto 用来计算要将多少百分比的来源像素颜色套用在最终颜色上(合法值是0.0到1.0)。 · DestPixelColor 画面缓冲区中目前像素的颜色。 · DestBlendFactor 用来计算要将多少百分比的画面缓冲区目前的像素颜色套用在最终颜色上(合法值是0.0到1.0)。 Direct3D让您改变SourceBlendFactor和DestBl

4、endFactor旗标来产生所要的效果。举例来说,如果您把SourceBlendFactor设成D3DBLEND_ONE(1.0,1.0,1.0,1.0)而把DestBlendFactor设成D3DBLEND_ZERO(0.0,0.0,0.0,0.0),最终颜色就只会用多边形的颜色。反过来说,如果把SourceBlendFactor设成D3DBLEND_ZERO并把DestBlendFactor设成D3DBLEND_ONE,多边形就会完全透明而最终像素就变成和画面缓冲区原先的颜色一样。如果把混合系数设到这两个极端之间并让两个值加起来等于1.0,多边形就会半透明地和画面缓冲区混合起来。

5、以大多数有趣的透明效果(如火焰及电浆束)来说,必须把SourceBlendFactor和DestBlendFactor设成使用贴图或顶点的值,不能单纯地只用固定值。改变各个画面的alpha值就可以产生闪烁的效果。另外如果FinalColor的值大于1.0(比如SourceBlendFactor和DestBlendFactor都是(1.0,1.0,1.0,1.0)),颜色值最大只能到1.0,因为1.0是可能的最大值。回想在前面几章,当您设定一个颜色时,事实上是在设定红、绿、蓝以及alpha值。所以您可以用各个贴图中贴图图素的alpha值加上SourceBlendFactor变量来控制透

6、明的结果。Direct3D会依据您所选的混合旗标选用不同的公式,将来源颜色和目的颜色结合成最终颜色。举个例子,让我们假设下列变量定义来源及目的值:(sr,sg,sb,sa)是来源像素的信息。(dr,dg,db,da)是目的像素的信息。另外再假设来源混合旗标和目的混合旗标都被设成D3DBLEND_SRCALPHA,也就是会产生表示成(sa,sa,sa,sa)的混合系数。有了这些定义,就可以用下面的公式来计算最终的混合颜色(fr,fg,fb,fa):(fr,fg,fb,fa)=(sr·sa+dr·sa,sg·sa+dg·sa,sb·sa+db·sa,sa·sa+da·sa)下面是各种可能

7、的混合旗标的说明。除了有特别注明之外,这些旗标都可以套用在D3DRENDERSTATE_SRCBLEND状态或D3DRENDERSTATE_DESTBLEND状态中:· D3DBLEND_ZERO 混合系数为(0,0,0,0)。 · D3DBLEND_ONE 混合系数为(1,1,1,1)。 · D3DBLEND_SRCCOLOR 混合系数为(sr,sg,sb,sa)。 · D3DBLEND_INVSRCCOLOR 混合系数为(1-sr,1-sg,1-sb,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。