最新标注
热门标注
历史更新
站点地图
RSS
Home
CrazyCoder
»
原创
»
it评论
»
it业界
»
互联网
»
精品软件
开发语言
»
网络编程
编程综合
嵌入式开发
算法
英文资料
汇编语言
PowerBuilder
p2p技术
验证码识别
DotNet
Java教程
C语言教程
C 教程
Delphi教程
VB教程
QQ协议开发
项目管理
»
数据库
»
Web开发
»
Python
Css教程
XML教程
网页特效
PhotoShop教程
Illustrator教程
CorelDraw教程
Ruby教程
CorelDraw教程
网站安全
开发平台-工具
Web
PHP教程
Flash教程
Ajax教程
Javascript教程
Html教程
Dreamweaver
Asp教程
技术综合
»
软件测试
办公软件
QQ相关
Windows
网络技术
游戏开发
软件工程
软件教程
编程思想
游戏开发
外挂开发
OpenApi
AutoCad
广告设计
3D设计
平面设计相关
移动手机开发
服务器
»
Linux
Unix/FreeBsd
web服务器
服务器技术
安全
博文摘选
»
翻译
首页
»
游戏开发
» 256色:基于256色的Alpha混合思路方法(查表法)的实现思路方法
Rss订阅
256色:基于256色的Alpha混合思路方法(查表法)的实现思路方法
on 2008-12-14
in
游戏开发
|
0 Comment
在网站WebSite上看到过很多Alpha混合计算
相关文档
其中不乏经典的作
但大多数都是基于16位显示模式下
而256色
却很少有人谈及
所以
决定写
个基于256色
Alpha混合算法
详细实现思路方法
以帮助那些初学者
给他们
点点小小
灵感:)
首先
假设你已经有了
个调色板
我们将根据这个调色板来计算和创建
个Alpha_Map[256][256]
2维整形
这个
用来存放混合后
颜色对应于(或近似)这个调色板中
索引值
然而
我们如何获得这个索引值呢?这就需要进行
个求近似值
Find_Index
这个
主要负责根据给定
3个基色
值
从调色板中找到相同颜色或最接近颜色
索引值
并返回这个索引值
此
还需要
个结构:BEST_FIT
它
定义是:
typedef struct BEST_FIT_TYP
{
sum; // 累加值
index; // 索引值
}BEST_FIT;
有了这个结构
就可以写Find_Index
了
原形如下:
Find_Index(BYTE R, BYTE G, BYTE B, PALETTEENTRY *palette)
{
rn = 0, // Red差值分量
gn = 0, // Green差值分量
bn = 0; // Blue差值分量
BEST_FIT best;
best.sum = 100; //
赋给累加值
个最大值
best.index = 0; //
化索引值
for (
index = 0; index < 256; index
)
{// 遍历调色板
rn = palette[index].peRed - R; // 计算差值
以下相同
(rn < 0)
rn = -rn; // 求绝对值
以下相同
gn = palette[index].peGreen - G;
(gn < 0)
gn = -gn;
bn = palette[index].peBlue - B;
(bn < 0)
bn = -bn;
(best.sum > (rn + gn + bn)) // 判断 3个分量
累加值是否大于原来
累加值
{
best.sum = rn + gn + bn; // 更新累加值
best.index = index; // 更新索引值
(0
best.sum) // 如果累加值为零
即颜色匹配
{
(best.index); // 返回索引值
;
}// end
}// end
}// end for
(best.index); // 返回近似值
}
这个
可以返回
个索引值
这样我们就能利用这个索引值建立Alpha_Map[256][256]查色表了
现在我们终于能够开始建立查找表了
这是
个50%
Alpha混合
如果需要
话
你可以改变混合级别
首先
在这里需要介绍说明
下
公式由来
以方便读者理解
先说说PALETTEENTRY这个结构
结构定义如下:
typedef struct tagPALETTEENTRY {
BYTE peRed;
BYTE peGreen;
BYTE peBlue;
BYTE peFlags;
} PALETTEENTRY;
这个结构分别用3个字节表示RGB 3基色
值
我们可以用这 3个基色值进行50%
Alpha混合运算
公式如下所示:
srcRGB:原点颜色值
destRGB:目标点颜色值
RGB:结果
alpha:混合级数
开始为
个0--1的间
浮点数
我们
般将它转换为整形进行计算
这里是50%
混合运算
所以它
值就是0.5
Alpha混合基本公式:
RGB = 0.5 * srcRGB + (1 – 0.5) * destRGB;
将其进行化简
就得到了下式:
RGB = 0.5 * (srcRGB + destRGB);
乘以0.5就相当于向右移1位
所以最后
公式就是:
RGB = (srcRGB + destRGB) >> 1;
根据这个公式
就能够获得
个50%
Alpha混合
RGB
色彩值
在这里由于是用调色板做
所以
RGB要分开来计算
下面就是
化Alpha_Map[256][256]
里面
了前面
Find_Index
;
void Alpha_Init(PALETTEENTRY *palette)
{
for (
index1 = 0; index1 < 256;
index1)
for (
index2 = 0; index2 < 256;
index2)
{
R = (palette[index1].peRed + palette[index2].peRed) >> 1;
G = (palette[index1].peGreen + palette[index2].peGreen) >> 1;
B = (palette[index1].peBlue + palette[index2].peBlue) >> 1;
Alpha_Map[index1][index2] = Find_Index(R, G, B, palette);;
}// end for
}
这样
我们便完成了基于256色
Alpha混合运算
查找表
当我们需要进行Alpha混合运算
时候
直接可以用源色和目
色
索引值作为
下标
来从这个表中找到
个近似
颜色
本人第
次发表这类文档
有不足的处和疏漏
地方
还望高手指教
强烈需求
起学习和研究
我
邮箱是:
[email protected]
欢迎来信!
Tags:
256色模式
256色位图
256色图片
256色
延伸阅读
2009-2-12
--
256色显示器:256色汉字显示程序
最新评论
发表评论
昵称
评论
验证码
点击图片更换
赞助商广告
随机更新
波音787,波音787 Dreamliner娱乐系统将选择Android
甜美美女,Photoshop调出写真美女图片甜美的红褐色
尚能饭否,雅虎老矣,尚能饭否
英国20多年前,斯库利:不是我赶走乔布斯 20多年从未联系
浅析Facebook的盈利模式
甜美美女,Photoshop调出写真美女图片甜美的红褐色
app杂志,几款杂志APP的比较
worker,2010 Information Worker Demonstration and Evaluation Virtual Machine (SP1) 提供下载
数据库数据恢复,数据"被 覆盖有假象,SQL数据库恢复终极绝招(数据恢复高级技术)
暗调高光,Photoshop打造古典的暗调青绿色婚片
专家提示:虚拟主机免费使用的时间决定用户是否愿意让服务商"hold住
淘宝商城年费,淘宝商城提高准入门槛 技术服务年费最低涨4倍
格式刷,Google Docs 终于有了格式刷,还可拖拽插入图片
对象关系映射,开放源码的对象关系映射工具ORM.NET 快档开发入门 Quick Start
qq2011,2011-9-15oracle视频第十三章 监听程序及服...
管理层声明书,惠普管理层隐瞒公司实情误导股东遭起诉
万科副总裁离职,Mozilla 副总裁 Mike Shaver 即将离职
mandarin,The foreign market for Mandarin learning
10 款最新的 jQuery 内容滑块插件
谷歌chrome,谷歌Chrome网络商店延伸至全球24个国家
运营商智能管道,运营商智能管道业务应如何创新?
暗调高光,Photoshop打造古典的暗调青绿色婚片
思想学习工作小结,三个多月来的工作和学习小结
俞永福指责腾讯玩文字游戏:UC浏览器份额未被超
Flex里DropDownList默认值记录
怎么给asp:button控件在css中加统一样式,求高手指教...
mysql权限,教您如何查看MySQL用户权限
paypal,PayPal 展示“未来的血拼”
社交网络营销,社交网络营销之传统营销VS社交网络营销
wcf扩展,WCF运行时框架的构建于扩展[共10篇]
热门标注
程序员的思维
(1)
程序员思维修炼
(1)
英国总统卡梅隆
(1)
英国ipad价格
(1)
首相卡梅隆
(1)
英国首相卡梅隆
(3)
ps金色立体字
(1)
金色立体字
(1)
zynga股价
(1)
二甲双胍片
(1)
二甲双胍缓释片
(1)
盐酸二甲双胍片
(1)
盐酸二甲双胍
(1)
二甲双胍
(1)
紫色天空泡泡龙
(1)
乐phone之家
(1)
对话泡泡
(1)
联想乐phone
(1)
阿内尔卡年薪
(1)
云朵宝贝大课堂
(1)
最近更新
梦幻诛仙》两次增开新服瞬满
10月22日19:00时再次加开3组新服
arp绑定脚本:绑定HGE到AngelScript脚本系统
游戏开发流程:游戏开发制作流程
MD2关键帧动画实现思路方法
通用编程器:游戏引擎中的通用编程技术
3dgameengine:3D Engine 的设计架构
运动模糊:简单的运动模糊效果实现思路方法
qq游戏外挂:通过游戏策划阶段防治游戏外挂
坐标转换:3D坐标转换成屏幕坐标的思路方法
外挂制作实例:游戏外挂制作例子包含代码
setstreamsource:SetStreamSource函数和数据流的使用
depthoffield:景深效果(Depth of Field) 的实现思路方法
角色扮演游戏引擎的设计原理
hge使用:HGE使用GDI绘制中文字体
如何成为一个程序员:想成为一个游戏程序员需要有以下资料
游戏设计的十条戒律
1万游戏开发专业人员难满足10万需求
扫雷游戏vb代码:模拟实现扫雷游戏代码
界面设计:界面流程控制模式设计
最新标注
程序员的思维
(1)
程序员思维修炼
(1)
英国总统卡梅隆
(1)
英国ipad价格
(1)
首相卡梅隆
(1)
英国首相卡梅隆
(3)
ps金色立体字
(1)
金色立体字
(1)
zynga股价
(1)
二甲双胍片
(1)
二甲双胍缓释片
(1)
盐酸二甲双胍片
(1)
盐酸二甲双胍
(1)
二甲双胍
(1)
紫色天空泡泡龙
(1)
乐phone之家
(1)
对话泡泡
(1)
联想乐phone
(1)
阿内尔卡年薪
(1)
云朵宝贝大课堂
(1)
最新评论