DXGI桌面复制API何时将区域识别为移动区域?

4
我有一个程序,使用DXGI桌面复制 API 来捕获桌面屏幕。我使用 IDXGIOutputDuplication::AcquireNextFrame 获取帧,并且能够逐帧成功地捕获我的桌面。为了进一步优化程序并尝试管理“已更改”和“已移动”的矩形区域,API 提供了 IDXGIOutputDuplication::GetFrameDirtyRects 和 IDXGIOutputDuplication::GetFrameMoveRects 以获取这些信息。然而,似乎从未有任何矩形被识别为已经移动过。文档说:已移动的矩形是指桌面图像中操作系统将其移到同一图像内的另一个位置的像素矩形。这到底意味着什么?DXGI 是否能够识别屏幕的任意部分已经被移动?或者这只适用于桌面窗口的移动?
2个回答

0
我只能想象这取决于图形驱动程序、显示器等因素,所以很难给出完整的源操作列表。
我尝试了一个桌面复制API的示例应用程序,在我最大化资源管理器窗口时出现了一个移动矩形事件(Windows 10周年更新,Surface Pro 3,没有外部屏幕)。

0
在我的测试中,所有更改的区域都被识别为 Windows 10 上的脏矩形。 在 Windows Server 2012(如 Windows 8)上,移动的区域可以正确地识别。

就我个人而言,我成功地在运行于 VMWare 的 Windows Server 2012 R2 Datacenter 上使用了 VMWare SVGA 3D 显示适配器来移动矩形。 - theimowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接