游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1585|回复: 0

[讨论]底色有alpha的颜色混合问题..

[复制链接]

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
发表于 2013-3-25 12:52:59 | 显示全部楼层 |阅读模式
本帖最后由 微无渊 于 2013-6-5 08:31 编辑

有两张图像,这两张图像本为一体但被分成了两张,一张是身体,一张是衣服,
现在要将这两张图进行合并,这就需要做颜色混合了,但这个混合和普通的混合不一样,因为两张图都有alpha,

所以如果底色alpha不等于255,则似乎是这样的一个公式:
int out_B = below_B * below_A / 255 + above_B * above_A / 255;  // 如果out_B大于255,使其等于255
int out_G = below_G * below_A / 255 + above_G * above_A / 255; // 如果out_G大于255,使其等于255
int out_R = below_R * below_A / 255 + above_R * above_A / 255; // 如果out_R大于255,使其等于255
int out_A = below_A + above_A; // 如果out_A大于255,使其等于255

其中below代表底色,above代表上色

然而经过测试,这个公式对于alpha为255的底色是错误的,
比如:
底色是:0xFFFFFFFF 纯白色
上色是:0x80000000 50%透明度的黑色
根据上面的公式,得到的却是纯白色的,而正确的应该是0xFF7F7F7F

对于这种底色alpha等于255的情况,如果改用这个公式:
below - (below-above)*above_alpha/255  就能得到正确的结果.

我的困惑也正在于此,就是不同的情况,需要用到不同的混合公式.

各位觉得?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-26 23:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表