游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4607|回复: 16

关于alpha混合的问题

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2004-8-7 00:14:00 | 显示全部楼层 |阅读模式
由于我的backsurface是开在vm中的,我如果想做一个图片和backsurface的alpha混合会比较慢.大约会在20fps左右. 现在我用一个建立在systemmem中的surface把需要混合的部分从backsurface中blt出来,然后和图片的surface进行混合运算,大约会在30-40fps左右,还是不太理想.请问有什么好的办法嘛?或者我这样做是不对的? 如果把backsurface建立在systemmem中的话那应该不行把,会很慢的....谢谢拉

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-8-7 10:11:00 | 显示全部楼层

Re:关于alpha混合的问题

自己建立内存管理,混合后再传到surface
而且你的混合算法似乎效率不高

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2004-8-7 13:55:00 | 显示全部楼层

Re:关于alpha混合的问题

不对啊,我的意思是我要和当前backsurface上的内容进行混合,所以比其他混合是不是会多出一个blt的过程?你说的“自己建立内存管理,混合后再传到surface”,还是不能避免这个过程啊。 关于混合算法的效率,我确实没有使用汇编的代码,但是应该没有这么大的差距把。。。。谢谢

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-8-7 14:26:00 | 显示全部楼层

Re:关于alpha混合的问题

如果需要频繁alpha,那么自己建立一个backbuffer的镜像在sysmem中,所有操作都针对这个镜像,只是最后绘制的时候,copy一次

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2004-8-7 20:11:00 | 显示全部楼层

Re:关于alpha混合的问题

这样效率上是否可以?因为需要不停的同步这个镜像? 我类似的试了一下,大概也在30-40fps左右,是不是混合算法不行?我换个试试

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-8-7 22:58:00 | 显示全部楼层

Re:关于alpha混合的问题

从sysmem向vm中复制本来就比较费资源。我做过试验:将一幅1024x768x32bit的offscreen surface复制到backbuffer中然后显示,结果在xp2500+ Dual channel DDR400 fx5600(AGP8x)上只能得到160fps,在p4 2.53+dual channel DDR266 9700(AGP8x)上也只能得到230 fps,而且这还没有做alpha blending。所以我的建议是使用D3D的方法,直接draw一个textured screen quad。然后用frame buffer blending的方式。这样改变后在上述两台电脑上性能分别提升5-10倍。

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2004-8-8 15:00:00 | 显示全部楼层

Re:关于alpha混合的问题

嗯嗯,是有点麻烦............

30

主题

398

帖子

403

积分

中级会员

Rank: 3Rank: 3

积分
403
QQ
发表于 2004-8-8 17:23:00 | 显示全部楼层

Re:关于alpha混合的问题

观望一下..

9

主题

121

帖子

121

积分

注册会员

Rank: 2

积分
121
QQ
发表于 2004-8-11 13:50:00 | 显示全部楼层

Re:关于alpha混合的问题

一般来说ddraw下是先在内存准备一个镜像完成混合操作的,最后从内存到显存copy一下,你的混合算法最好用汇编优化一下,Intel有相关的资料。
至于转移到d3d下,倒是个简单的解决方法,但是你需要考虑你的潜在客户是否都有3d卡,之所以会有那么大的提升主要是显卡的问题。

3

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2004-8-11 18:02:00 | 显示全部楼层

Re:关于alpha混合的问题

http://blog.gameres.com/show.asp?colnmu=0&BlogID=232

上面有个我写的例子,C++版本的,在我的机子上有420个fps!

http://blog.gameres.com/show.asp?colnmu=0&BlogID=232

640x480 32bit色深
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-17 08:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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