Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ DXGI桌面复制API何时将区域标识为移动区域?_C++_Directx_Dxgi - Fatal编程技术网

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

C++ DXGI桌面复制API何时将区域标识为移动区域?,c++,directx,dxgi,C++,Directx,Dxgi,我有一个使用DXGI桌面复制API捕获桌面屏幕的程序 我使用IDXGIOutputDuplication::AcquireNextFrame获取帧,并且能够一帧一帧地捕获桌面帧 为了前进,我尝试优化我的程序,并尝试管理脏的和移动的矩形。API提供了IDXGIOutputDuplication::GetFrameDirectRects和IDXGIOutputDuplication::GetFrameMoveRects来获取这些信息 然而,似乎从来没有任何矩形被标识为正在移动。文档中说移动的矩形是:

我有一个使用DXGI桌面复制API捕获桌面屏幕的程序

我使用
IDXGIOutputDuplication::AcquireNextFrame
获取帧,并且能够一帧一帧地捕获桌面帧

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

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

操作系统显示的桌面映像中像素的矩形 已移动到同一图像中的其他位置


这到底是什么意思?DXGI能否识别屏幕的任意部分已被移动?或者这只适用于正在移动的桌面窗口?

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


我玩了一个桌面复制api示例应用程序,当我最大化资源管理器窗口(windows 10周年纪念,surface pro 3,无外部屏幕)时,出现了一个移动矩形事件。

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

FWIW我能够在VMWare托管的Windows Server 2012 R2数据中心上,使用VMWare SVGA 3D显示适配器获取移动矩形