讨论DirectDraw的速度问题

hba 2002-12-11 03:14:11
1)Lock BackSurface 然后把数据写上去
2)声明一个与BackSurface大上相同的表面,然后Lock它,把数据写上去,再把它Blt到BackSurface上
这两个方法哪个快?


一个程序员:对一个表面进行操作时, 对内存的操作与对显卡的操作要快一些
把操作完了的内存表面BLT到内存上去就OK了, 这就是我的意思
另一个程序员:第二种方法进行了两次内存拷贝,慢在这里!

哪个有道理?
...全文
20 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyzcom 2002-12-12
  • 打赏
  • 举报
回复
呵呵,你的问题是分情况的。而回答的那两个人在问题是没把情况分对。
1、如果Surface是建立在显存中的:
那么LockSurface直接写上去,速度会慢一些。
如果先在内存中建立一个Surface,写在这个Surface上以后,再Blt过去。会快一些。
但是,如果这个Surface本来就不大。那么后一种方法反而会慢一些。
为什么?因为在显存中操作慢的原因就是因为CPU对显卡内存总线的宽度。这个问题在PCI显卡时代尤为明显。
最后建议:除了MainSurface和BackSurface以后,其它的所有Surface都建立在内存中。这样即没有Lost的痛苦,又不需要顾虑内存和显存数据之间的速度问题。因为在内存中COPY比内存COPY到显存的速度快很多。

2、如果Surface是建立在内存中的:
就像上面所说的,如果是建立在内存中,那么就没有必要再去新建一个Surface,然后Blt一次,明显的浪费。

最后再说明一点:如果机器的显卡够好,如GeForce2的256BIT GPU,加上DDR的内存等等,Blt的速度是奇快的。可以快到一秒钟超过2000多次Blt操作。
hba 2002-12-12
  • 打赏
  • 举报
回复
up
hba 2002-12-12
  • 打赏
  • 举报
回复
好的,谢谢,你爱死你了.........


还有别人有不同意见吗?
如果没有我结帖了~
hba 2002-12-11
  • 打赏
  • 举报
回复
不会吧,半天了,没人回复...太让我失望了...

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧