赞助商

Windows – 从GPU获取完整的桌面屏幕截图

发布时间:2019-05-15 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了Windows – 从GPU获取完整的桌面屏幕截图脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用 Windows API的BitBlt功能来执行屏幕抓取.

但是有很多缺点:

> DWM和Aero导致了巨大的减速(3ms – > 35ms只是调用BitBlt) – 要解决这个问题,这将需要禁用我宁愿不做的Aero.屏幕闪烁,事情转移.
>数据必须重新传输到GPU才能将数据作为纹理加载
>没有CAPTUREBLT标志,无法捕获分层Windows.启用时,捕获时鼠标光标会闪烁.这似乎是一个小问题,但是当应用程序没有其他bug时,这是非常烦人的.作为一种解决方法,我打算将一个分层窗口渲染为一个附加的游标.

我已经在使用OpenGL显示和操纵捕获的屏幕数据. BitBlt给出了像素数据,并且将其加载到纹理中相对容易.然而,这是稍微荒谬的,因为当GPU开始使用时,我手动将数据重新发送回GPU.数据绝对是有的,但试图访问它是一个不同的事情.

我认为这个功能在供应商的待办事项列表中(或可能在任何列表中)可能不是很高,但是我想询问那些知道AMD(ATI)或NVidia在他们的驱动程序中读取屏幕缓冲区(例如,进入OpenGL上下文).我根本不了解现代GPU架构,知道从哪里开始挖掘答案.

解决方法

OpenGL只能读取上下文framebuffer(一个窗口),以及您创建的任何帧缓冲区或pbuffers. OpenGL无法触摸桌面或任何其他窗口.

总结

以上是脚本之家为你收集整理的Windows – 从GPU获取完整的桌面屏幕截图全部内容,希望文章能够帮你解决Windows – 从GPU获取完整的桌面屏幕截图所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: