游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3360|回复: 10

请高手指点一下,谢谢

[复制链接]

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2005-2-16 14:24:00 | 显示全部楼层 |阅读模式
我看了本网站的图形图象处理,说在用alpha混合处理透明度问题时,要用到alpha通道数据,
我比较菜,请问怎样根据alpha通道数据进行混合?哪位高手能详细讲解一下?最好附带程序,先谢谢了!

17

主题

80

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2005-2-16 17:28:00 | 显示全部楼层

Re:请高手指点一下,谢谢

alpha通道数据进行混合?
没听说过,我用的是DX,只需要设几个涵数就可以了,混合的原理是将本来的加上要混合的.比如说镜子的颜色40%后面背景的60%(颜色缓冲区),然后就是最后的透明度了.

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-2-16 17:52:00 | 显示全部楼层

Re:请高手指点一下,谢谢

楼主说清楚一点,你的意思是不是根据Alpha通道将源位图和目标位图合并?

DDraw中就Lock之后逐点自己算吧。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-2-16 19:57:00 | 显示全部楼层

Re:请高手指点一下,谢谢

楼主说的有点不太清楚,我的理解是:
每个点由如下格式来表示:R-G-B-Alpha
其中R-G-B为该点颜色的红-绿-蓝分量,而Alpha则成为Alpha通道,假设有32级透明度,那么Alpha的取值范围是0-31。当Alpha=0时,表示该点完全透明;当Alpha=31时,表示该点完全不透明。也就是说绘制点时由R-G-B来确定该点的色彩,由Alpha来却定该点的透明程度。
半透明计算公式为(将B以半透明方式画到A上):
R(C)=alpha*R(B)+(31-alpha)*R(A)
G(C)=alpha*G(B)+(31-alpha)*G(A)
B(C)=alpha*B(B)+(31-alpha)*B(A)

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2005-2-17 09:37:00 | 显示全部楼层

Re: 请高手指点一下,谢谢

我的意思是将源色彩与目标画面色彩进行alpha混合,会将源色彩按一定透明度与目标画面色彩进行混合,得到一个透明的效果,可这样也会将源色彩的背景色按该透明度与目标画面色彩混合,本网站(http://articles.gameres.com/Program/Visual/2D/SkillEffect.htm)介绍说,可以往图象中加入Alpha通道数据,就可以解决这个问题,可我不会用这个Alpha通道数据来进行透明处理(也不懂),能详细再讲解一下么??谢谢!

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-2-17 10:26:00 | 显示全部楼层

Re:请高手指点一下,谢谢

这个。。。很多讲述二维图形特效的书上都会讲到的。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-2-17 13:59:00 | 显示全部楼层

Re:请高手指点一下,谢谢

可以用如下方法:
设源图片为A,目标图片为B。可以先制作一张B的灰度图C,越暗表示透明度越高,反之越低,这张灰度图就可以作为Alpha通道。在将B绘制到A上时,先检索以下C中对应点的灰度,作为Alpha数据,进行Alpha运算就行了!

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-2-17 14:07:00 | 显示全部楼层

Re:请高手指点一下,谢谢

正如上面几位所说的,给每一个点对应一个Alpha值,这样进行Alpha计算,而不是把整幅图按一个同样的透明度进行计算。你可以把背景设为完全透明。

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
 楼主| 发表于 2005-2-17 16:57:00 | 显示全部楼层

Re: Re:请高手指点一下,谢谢

DreamSnow: Re:请高手指点一下,谢谢

可以用如下方法:
设源图片为A,目标图片为B。可以先制作一张B的灰度图C,越暗表示透明度越高,反之越低,...

是不是将c中的值除以255,得到透明度,然后将B图与之对应的点按此透明度与A混合?

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-17 17:27:00 | 显示全部楼层

Re:请高手指点一下,谢谢

简单地说是这样:
1、纹理中有透明信息。
2、先画后面的,后画前面的。
3、画前面的时候打开Aplpha混合。
设定不同的参数,可以出现各种功能,有些效果很酷的!但缺省的参数就能用。
如果纹理中没有透明信息,就得设定参数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 09:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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