几种常用的像素混合方法

转载 2005年02月25日 18:25:00
  前两天为大家介绍了处理透明光影效果的 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 等等,但这些方法运算相对较慢,而且游戏中对这些效果的要求也比较少,所以在实际的游戏中使用得很少。

  如果您还有什么新的思路和好的想法,不妨也通知俺一声,好东西也让大家分享一下嘛,呵呵 :)

几种常用的像素混合方法

2000年08月26日 11:00:00 ● 樊一鹏   前两天为大家介绍了处理透明光影效果的 Alpha-Blending 技术,今次我将再为大家介绍其它几种常用的像素混合方法,这些方法一般...
  • softart
  • softart
  • 2007年10月27日 06:56
  • 204

asp.net中常用的几种页面间传递参数的方法,及各自优缺点

1、页面重定向方式中常用的两 (1)Redirect 方法将客户端重定向到新的页面,只是简单地终止当前页面,并转入新的页面开始执行,对转入的页面无任何限制。 (2)Transfer 方法终止...
  • yh_bxhl
  • yh_bxhl
  • 2012年07月25日 21:35
  • 3584

几种常用的分页技术

一.逻辑分页 1.逻辑分页的第一种方式,利用ResultSet的滚动分页。步骤如下:  a.根据条件sql查询数据库。  b.得到ResultSet的结果集,由于ResultSet带有游标,因此可以使...
  • qq_34734520
  • qq_34734520
  • 2016年08月11日 12:59
  • 1175

统计学(四):几种常见的参数估计方法

参数估计有点估计(point estimation)和区间估计(interval estimation)两种。 点估计是依据样本估计总体分布中所含的未知参数或未知参数的函数。通常它们是总体的...
  • ch1209498273
  • ch1209498273
  • 2017年10月22日 22:10
  • 189

定时任务的几种实现方式

Android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的选择。一、Timer 实现定时任务 Timer ti...
  • CJF0410
  • CJF0410
  • 2016年12月20日 23:18
  • 251

Android四种事件处理方式

四种时间处理方式,使用四个按钮实现,界面截图如下: 1. 使用匿名内部类处理 2. 使用内部类,完成事件处理。 3. 使用Activity本身作为事件监听器类,完成事件处理。 4. 使用绑定到标签的形...
  • lyz21
  • lyz21
  • 2017年12月08日 14:55
  • 55

图像处理------基于像素的图像混合

介绍几种常见的将两张图像混合在一起形成一张新的图像的算法,首先看一下下面算法演示中要使用的两张图像:为了得到更好的混合效果,我选择了两张一样大小的图片。方法一:通过简单对于像素点的像素相乘得到输出像素...
  • mao0514
  • mao0514
  • 2015年07月24日 14:57
  • 1016

读取数据库配置文件的ConfigManager类

package util; /** * Created by Administrator on 2017/10/31. */ import java.io.IOException; import...
  • yang1393214887
  • yang1393214887
  • 2017年11月01日 09:32
  • 190

常见的响应式布局方式

布局类型 在谈响应式布局前,我们先梳理下网页设计中整体页面排版布局,常见的主要有如下几种类型:   布局实现 采用何种方式实现布局设...
  • bboyjoe
  • bboyjoe
  • 2016年03月31日 10:54
  • 2390

常用的爬虫技巧

爬虫网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网...
  • lashou_tech
  • lashou_tech
  • 2016年05月12日 11:06
  • 774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种常用的像素混合方法
举报原因:
原因补充:

(最多只允许输入30个字)