几种常用的像素混合方法
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/23 22:50:30
几种常用的像素混合方法
几种常用的像素混合方法
几种常用的像素混合方法
『Additive-Blending』
至于 Additive-Blending,就是用饱和相加的方法来混合源像素和目标像素的颜色分量.一般用来处理光源,比如说爆炸的火光等等.下面就来看看两个像素间的 Additive-Blending
第一步,先把源像素和目标像素的 RGB 三个颜色分量分离,然后把对应颜色分量相加,假如某分量的结果超出了该分量的最大值,则对该分量作饱和运算(即假如结果超出了允许的最大值则取结果为允许的最大值),最后把三个颜色分量重新合成为一个像素输出.
在这个过程中,为了分离像素中的 RGB 三个颜色分量,我们一般会使用掩膜的方法.至于具体的三个掩膜值:RMask、GMask 和 BMask,能够从 DirectDraw 中的 DDPixelFormat 返回得到(当然,您也能够根据自己的需要做各种灵活处理).
在下面给出的说明性例程中,我们假设 RMask、GMask 和 BMask 已存放的是 RGB 三个颜色分量的位掩膜值,三个颜色分量的最大值为 255,而 source 和 dest 是指向源像素和目标像素的指针.
unsigned long tdest = 0;
unsigned long t;
t = (*source & RMask) (*dest & RMask);
if(t RMask) t = RMask;
tdest ¦= t;
t = (*source & GMask) (*dest & GMask);
if(t GMask) t = GMask;
tdest ¦= t;
t = (*source & BMask) (*dest & BMask);
if(t BMask) t = BMask;
tdest ¦= t;
*dest = (unsigned short)tdest;
这段代码使用了一个小技巧来处理饱和运算,即结果用位掩膜值来衡量是否要作饱和运算处理.
『Subtractive-Blending』
同 Additive-Blending 正好相反,Subtractive-Blending 就是用饱和相减的方法来混合源像素和目标像素的颜色分量.FreeMind 很喜欢用他来处理阴影,用这种方法处理出来的阴影效果能够很自然地同环境相融合.
至于 Subtractive-Blending 的处理过程,同 Additive-Blending 很类似,我就不罗嗦了.唯一要注意的是当用目标像素的颜色分量减去源像素的颜色分量时,假如结果小于允许的最小值则结果取为允许的最小值(通常为零).
『其他混合方法』