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

时间:2016-05-25 16:10:17

标签: c++ directx dxgi

我有一个使用DXGI Desktop Duplication API捕获桌面屏幕的程序。

我获得了IDXGIOutputDuplication::AcquireNextFrame的帧,我能够逐帧捕获我的桌面。

为了继续前进,我尝试优化我的程序并尝试管理移动矩形。 API提供IDXGIOutputDuplication::GetFrameDirtyRectsIDXGIOutputDuplication::GetFrameMoveRects来获取这些信息。

然而,似乎从来没有任何矩形被识别为被移动。文档说移动的矩形是:

  

桌面图像中的像素矩形表示操作系统   移动到同一图像中的另一个位置

这究竟是什么意思? DXGI可以识别屏幕的任意部分已被移动吗?或者这可能只适用于移动的桌面窗口?

2 个答案:

答案 0 :(得分:0)

我只能想象它取决于图形驱动程序,监视器等等,所以可能很难给出完整的源动作列表。

我玩桌面复制api的示例应用程序,当我最大化浏览器窗口(Windows 10周年纪念版,表面专业版3,没有外部屏幕)时,有一个移动的矩形事件

答案 1 :(得分:0)

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