我有一个使用DXGI Desktop Duplication API捕获桌面屏幕的程序。
我获得了IDXGIOutputDuplication::AcquireNextFrame
的帧,我能够逐帧捕获我的桌面。
为了继续前进,我尝试优化我的程序并尝试管理脏和移动矩形。 API提供IDXGIOutputDuplication::GetFrameDirtyRects
和IDXGIOutputDuplication::GetFrameMoveRects
来获取这些信息。
然而,似乎从来没有任何矩形被识别为被移动。文档说移动的矩形是:
桌面图像中的像素矩形表示操作系统 移动到同一图像中的另一个位置
这究竟是什么意思? DXGI可以识别屏幕的任意部分已被移动吗?或者这可能只适用于移动的桌面窗口?
答案 0 :(得分:0)
我只能想象它取决于图形驱动程序,监视器等等,所以可能很难给出完整的源动作列表。
我玩桌面复制api的示例应用程序,当我最大化浏览器窗口(Windows 10周年纪念版,表面专业版3,没有外部屏幕)时,有一个移动的矩形事件
答案 1 :(得分:0)
在我的测试中,所有更改的区域在Windows 10上均被识别为脏区。 在Windows Server 2012(如Windows 8)上,可以正确识别移动的区域。