游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2043|回复: 8

请教一个问题!

[复制链接]

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-3-26 10:20:00 | 显示全部楼层 |阅读模式
2D环境下,对表面的渲染由CPU完成,而不是由显卡完成,为了提高运算速度,在做alpha半透明混合特效时,有网友介绍说应把位图表面放在内存中(默认放在显存中),我在想,做这一步的原因是CPU操纵内存比显存快,但他把主表面仍放在显存中(alpha混合时,也用到主表面数据),他这样做的效果是不是最好的?清高手指点一下!!谢谢!!!!
原网址为    http://dev.gameres.com/Program/Visual/2D/Ddutil.htm

4

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2005-3-26 10:45:00 | 显示全部楼层

Re:请教一个问题!

我是放在系统内存的,但是我朋友说要看两个内存的速度,有的显卡好,速度比系统内存快,放显存好,我没试过,不知道,我一直放系统内存的。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-3-27 12:32:00 | 显示全部楼层

Re:请教一个问题!

2D的alpha运算没有硬件加速,完全是由CPU来做的,而CPU是从系统内存中取得数据的,如果把离屏表面开在显存中,做alpha运算时,要将图像数据从显存考贝到系统内存,再由系统内存送往CPU,而从显存向系统内存传递数据的速度是非常慢的。

一般的做法是:将主表面和后备缓冲区开在显存中,而将离屏表面开在系统内存中。并且在系统内存中开辟一个类似后备缓冲区的离屏表面,先将各种结果输出到这个表面上,最后将这个最终的结果一次性拷贝到后备缓冲区,目的是尽量减少系统内存与显存的数据交换,这样会在一定程度上提高程序效率。

拷贝速度:显存到显存>系统内存到系统内存>系统内存到显存>显存到系统内存

14

主题

45

帖子

45

积分

注册会员

Rank: 2

积分
45
 楼主| 发表于 2005-3-28 09:46:00 | 显示全部楼层

Re:请教一个问题!

多谢帮助!小弟明白了!!谢谢!

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-28 10:22:00 | 显示全部楼层

Re:请教一个问题!

强烈建议用d3d的id3dxsprite作2d,呵呵。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-3-28 14:56:00 | 显示全部楼层

Re:请教一个问题!

d3d有硬件加速,处理2D当然没得说,就一个字——爽!^_^

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2005-3-28 15:15:00 | 显示全部楼层

Re:请教一个问题!

果然

77

主题

203

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
发表于 2005-3-29 10:58:00 | 显示全部楼层

Re:请教一个问题!

我没有学过d3d的id3dxsprite的2d编程,只会用directdraw组件进行编程!不知id3dxsprite的2d编程学起来跟directdraw组件是不是差不多?以前,我一直认为directdraw组件也是硬件加速的,难道directdraw组件(如blt(),bltfast() 等函数)不是硬件加速的?各位是怎么认为的?

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-3-29 11:50:00 | 显示全部楼层

Re:请教一个问题!

blt(),bltfast() 等函数确实有硬件加速,不过要求被处理表面在显存中。但是DDraw不支持alpha特效,想做alpha效果就得用CPU来算,所以就发生了前面说过的问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 01:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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