几种常用的像素混合方法
前两天为大家介绍了处理透明光影效果的 Alpha-Blending 技术,今次我将再为大家介绍其它几种常用的像素混合方法,这些方法一般在游戏中被用来处理光影效果。
『Alpha-Blending』
前次已经说了,所谓 Alpha-Blending,其实就是按照“Alpha”混合向量的值来混合源像素和目标像素,一般用来处理半透明效果。
『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 很类似,我就不罗嗦了。唯一要注意的是当用目标像素的颜色分量减去源像素的颜色分量时,如果结果小于允许的最小值则结果取为允许的最小值(通常为零)。
『其它混合方法』
玩过 PHOTOSHOP 的人都知道,其实像素间的混合方法还有很多种,比如 multiplicative,divisive,maximum,minimum 等等,但这些方法运算相对较慢,而且游戏中对这些效果的要求也比较少,所以在实际的游戏中使用得很少。
如果您还有什么新的思路和好的想法,不妨也通知俺一声,好东西也让大家分享一下嘛,呵呵 :)
几种常用的像素混合方法相关推荐
- 10种常用的网络营销方法
网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新,下面就介绍如今网络营销最常用的1 ...
- **10种常用的网络营销方法**
**10种常用的网络营销方法** 网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新 ...
- 计算机中十二种常用密码的破解方法(转)
计算机中十二种常用密码的破解方法(转)[@more@] 在日常操作中,我们经常要输入各种各样的密码,例如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这些密码,就有可能用不了机器.打不开文件.不 ...
- 特征工程:8种常用类别型数据处理方法
8种常用类别型数据处理方法
- 几种常用时钟分频实现方法
在我们学习中,常常需要对时钟进行分频处理,本文将介绍几种常用分频方法. 一.2的整数次幂分频 这种分频很简单,只需要设置一个计数器,对计数器进行计数,计数器的第i位则对应的2的i-1次幂分频.此方法适 ...
- 产品经理懂点技术:几种常用的系统开发方法
常用的系统开发方法有: 结构化系统开发方法 原型法 面向对象方法 计算机辅助软件工程方法 下面一一为大家详细介绍: 1 结构化系统开发方法 结构化系统开发方法(Structured System An ...
- 几种常用的数组遍历方法
整理一下常用的几种遍历方法,for和while循环就不再说了,说一下其他几种非常好用的方法 1.for in for in可定是接触比较早的遍历数组的方法,其实它也可遍历对象(遍历字符串也是可以的! ...
- 几种常用的文件加密方法
下文是中软通用产品研发中心陈尚义根据http://blog.sina.com.cn/s/blog_611c36a80100gch7.html?tj=1编译. 每个人的电脑硬盘中都会有一些个人隐私或秘密 ...
- 总结几种常用的单片机加密方法
总结前人的经验,摸索着写一点实用的方法,供大家参考:在这里不讲加密算法,只讨论结合软硬件的加密方法,总结了一下大该有以下几种: 一.加密方法 1.烧断数据总线.这个方法我想应不错,但应有损坏的风险,听 ...
最新文章
- Android伍什小随笔(二)- 更新中
- 【数据竞赛】这篇文章送给想要学习特征交叉的朋友。
- linux 释放cache 内存
- 多选Select排序
- P2467-[SDOI2010]地精部落【dp】
- 【网络流】人员雇佣(luogu 1791)
- OpenCV文档阅读笔记-inRange官方解析及实例
- OpenGL ES 加载3D模型
- 计算机专业盲打,在win7系统电脑练习盲打的方法
- element 修改表单值后表单验证无效_element 表单自定义校验规则
- armbian php ldap,N1刷Armbian后刷Seafile7.1.5做家庭云盘提要
- 网络工程师Day7--本地AAA配置
- 中国石油大学(北京)-《钻井液工艺原理》第三阶段在线作业
- 大学计算机技术导论,北京邮电大学计算机学院网络技术导论第一章资料.ppt
- 计算机24点游戏音调,24点游戏,任意点游戏在线计算器,4个数加减乘除算24点,任意点_三贝计算网_23bei.com...
- css淡入动画,使用CSS淡入大动画效果
- ..以前似乎用作函数或命令,与其在此处作为变量名称的用法冲突?
- 华为手机桌面角标开发
- Python数据处理
- php deel views,全量修改文件App名称和改动views位置设置
热门文章
- esxi能直通的显卡型号_虚拟黑群也可以NVMe加速?还能万兆?wa!
- 关机提示错误(已解决) 0x0074006e指令引用的0x0074006e内存不为read
- Best Fitting Hyperplanes for Classification(用于分类的最佳拟合超平面)
- 看了下面的关于大亚湾核电站的一些报道,我终于明白为什么老弟在惠阳买的房子会这么便宜了
- Vue调用后台接口渲染列表
- [云炬学英语]每日一句2020.8.30
- 协鑫集成第二批1000台E-KwBe光伏储能设备即将启运澳洲
- Hbuilder在浏览器里不显示内容
- EL表达式中fn函数的强大功能,很简单,很好用,很强大
- 微型计算机的主要性能指标(),微型计算机的主要性能指标