启用Aero的BitBlt性能

时间:2011-08-22 22:56:05

标签: c++ performance winapi bitblt

我希望通过BitBlt获得更多性能以捕获屏幕。当Aero保持启用状态时,仅捕获屏幕的400x400像素区域可将捕获时间从我的计算机上的平均50毫秒(完整1920x1200)减少到大约33毫秒(400x400)。这是一个令人失望的低改善。

我唯一的选择是禁用Aero吗?我知道,当Aero被禁用时,我可以在全屏幕上获得快速3ms的快速捕获。

2 个答案:

答案 0 :(得分:13)

Aero模式下的屏幕截图非常昂贵,因为它需要与DWM同步(想想等待所有人不要眨眼睛拍一张合影),并在Vista上锁定整个GPU管道。在Windows 7上,GDI性能为improved by accelerate common GDI operations and reduce GDI locking

尝试使用undocumented DWM functionshooks来获取DWM使用的共享曲面。但是,如果您计划处理图像数据(例如发送到网络或保存到文件),您仍需要付出代价,通过有时较慢的FSB将数据从视频内存移动到系统RAM。

答案 1 :(得分:1)

现在禁用aero我猜。我似乎无法真正超过15 fps,大概是因为它锁定了30 fps的边界,而且我不能“进入”获得一个帧直到下一个边界开始,然后必须等待整个时间过去了。

相关问题