本帖最后由 ojajo 于 2023-2-21 14:42 编辑
Windows桌面采集技术发展史GDI:第一代桌面采集 Windows 图形设备接口(GDI)是为与设备无关的图形设计的。基于 Windows 的应用程序不能直接访问图形硬件,应用程序通过 GDI 来与设备驱动程序进行交互。GDI 截图就是通过屏幕的DC获取到当前屏幕的位图数据。 Ø 特点:不受windows版本限制,基本兼容各版本的系统; Ø 缺点:使用CPU,消耗大量cpu运算时间,若不单采鼠标,则使用gdi采集时,鼠标会出现闪烁,无法实现过滤指定窗口。
DXGI:高性能桌面采集技术 DXGI(Microsoft DirectX Graphics Infrastructure)是微软提供的一种可以在win8及以上系统使用的图形设备接口。它负责枚举图形适配器、枚举显示模式、选择缓冲区格式、在进程之间(例如,在应用程序和桌面窗口管理器(DWM)之间)共享资源,以及将呈现的帧传给窗口或监视器以供显示。其直接和硬件设备进行交互,具有很高的效率和性能。 Ø 特点:Win Vista 以后支持,使用GPU直接处理纹理,效率最高; Ø 缺点:根据Direct3D 版本不同,存在硬件的支持以及调用特性 的区别,且因为采集需要获取设备的adapter,所以无法采集桌面窗口。
Magnification:弯道超车的采集技术 Magnification API 使用于放大屏幕某个区域的 辅助应用技术,初衷是用于协助视力存在问题或者色弱的用户能跟方便的看到桌面内容的api Ø 特点:能实现放大缩小颜色转换等操作,能过滤窗口

Window Graphics Capturer:新世代采集技术(附件中的demo就是应用了此技术) WGC 全称为 Windows Graphics Capture 是微软目前主推的一个桌面/窗口采集技术,使用 D3D11 库实现。该采集技术最早在Windows 10 18年3月份的更新中提供。WGC 对比放大镜采集(Magnification Capture) 具有更高的性能、更低CPU及GPU消耗。但是在 使用方面比起其他采集方式会更复杂。 Ø 特点:效率高,拓展屏采集支持高,1080p采集消耗gpu达到个位数; Ø 缺点: 1. 当Capture Session开始采集后,在刚开始采集的时候可能存在 HRESULT 为S_OK ,但是画面数据为空,因为这个时候采集Engine可能处于启动中状态; 2. 当开始采集是,Windows会在采集源(窗口或桌面)区域增加一个黄色边框去标识正在采集的区域,目前无法设置该边框的样式或者去除该边框; 3. WGC 使用SetWindowDisplayAffinity 实现窗口过滤,但是设置的窗口必须为当前进程创建的子窗口才能设置成功,否则无法实现过滤。
WGC高性能窗口截图demo,VM16虚拟不黑屏.rar
(113.51 KB, 下载次数: 236)
|