简体   繁体   English

启用Aero的BitBlt性能

[英]BitBlt performance with Aero enabled

I'd like to get more performance out of BitBlt for capturing the screen. 我希望通过BitBlt获得更多性能以捕获屏幕。 When Aero remains enabled, capturing only a 400x400 pixel area of the screen reduces capture time from an average of 50ms (full 1920x1200) to about 33ms (for 400x400) on my machine. 当Aero保持启用状态时,仅捕获屏幕的400x400像素区域可将捕获时间从我的计算机上的平均50毫秒(完整1920x1200)减少到大约33毫秒(400x400)。 This is a disappointingly low improvement. 这是一个令人失望的低改善。

Is my only option disabling Aero? 我唯一的选择是禁用Aero吗? I do know that i can get a blinding fast 3ms capture on the full screen when Aero is disabled. 我知道,当Aero被禁用时,我可以在全屏幕上获得快速3ms的快速捕获。

A screen capture in Aero mode is very expensive because it requires synchronization with the DWM (think about waiting for everyone not blink their eyes to take a group photo), and locking the entire GPU pipe on Vista. Aero模式下的屏幕截图非常昂贵,因为它需要与DWM同步(想想等待所有人不要眨眼睛拍一张合影),并在Vista上锁定整个GPU管道。 On Windows 7 GDI performance is improved by accelerate common GDI operations and reduce GDI locking ) 在Windows 7上, 通过加速常见的GDI操作并减少GDI锁定提高 GDI性能

There are attempts of either using undocumented DWM functions or hooks to get the shared surface used by DWM. 尝试使用未记录的DWM函数钩子来获取DWM使用的共享表面。 But you still need to pay the price to move data from video memory to system RAM via the sometimes slow FSB if you plan to process the image data (eg send to a network or save to file). 但是,如果您计划处理图像数据(例如发送到网络或保存到文件),您仍然需要付出代价才能通过有时很慢的FSB将数据从视频内存移动到系统RAM。

disable aero for now I guess. 我想现在禁用空气动力学。 I can't seem to get really above 15 fps out of it, presumably because it's locking on 30 fps boundaries, and I can't "get in" to get a frame until after the next boundary starts, and then have to wait for the whole time to elapse. 我似乎无法真正超过15 fps,大概是因为它锁定了30 fps的边界,而且我不能“进入”获得一个帧直到下一个边界开始,然后必须等待整个时间过去了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM