Windows 截图原理,高难度问题,请慎入
另外 qq 的截图应该不是一般的 api,现在的截图工具都得支持 dx,太老的 api 截不到 dx 的游戏
我觉得 lz 可以做个测试,把显示器关了, 然后盲操作截图?
不如这个东西 Elgato 4K60 Pro MK.2 这是真的 1080p 240hz 采集卡 全自动按你要求录视频 然后逐帧你可以满满分析
DWM,窗口管理器什么的应该有好多个渲染层,有一些视频(比如 hdr )渲染的和窗口什么的都不一样
所以这个问题还是挺复杂的
https://www.zhihu.com/question/21747929/answer/498345137
之前看过这篇文章,供参考
如果只有显卡没有显示适配器,系统不会绘制图形什么的。
这和显示器刷新率有什么关系???
Windows 底层图形绘制 api 是 DirectX 。DirectX 和显卡沟通,在显存上申请一块 Buffer 代表画面帧( Frame ),类似于 web 中的 canvas (可能不太贴切), 画布上具体要画什么东西,由上层软件给他发命令:这里画个圈圈,白色的,那里一个方块啥的,方块黑色的······
因为画面上命令绘制必然有先后顺序,如果只有一块 Buffer,人会看到画面是一步一步画出来的,这对于画面连贯性影响很大。现代系统对此的优化方法就是双缓冲三缓冲这种,前台始终显示的绘制完的画面帧,绘制中帧的放后台,画完后交换。
这个交换刷新后画面的时间间隔,就是的刷新率 。Frame 不刷,输出画面不会变。
一般情况下,要更新画面帧,应用软件是把自己要绘制的数据在内存中加载好,然后通过 DirectX 发到显卡上。截图是反过来,把 Frame 从显存读回内存,内存中你想干怎么就你自己干了,反正和硬件架构无关了。