DXGI 桌面复制,只捕获特定的 RECT

DXGI desktop duplication, capture only a particular RECT

有什么方法可以从使用桌面复制捕获的图像中裁剪特定的 RECT,并在应用一些效果后将其渲染回 window。

请看这张图:

以记事本为例,如上图我想截取红色矩形区域(window RECT区域)渲染回window。 当 window 从一个位置移动到另一个位置时,捕获源 RECT 也应该与 window 一起移动(完全像 windows 放大镜 window)。

我已经提到了DXGI desktop duplication sample,看起来很复杂。

注意:我将使用WDA_EXCLUDEFROMCAPTURE从捕获的RECT中删除window,这样我就能够得到[后面的视觉效果=28=]

API 的设计方式使您可以用非常小的处理开销为整个显示器捕获合成图像。没有捕获感兴趣区域 (ROI) 的选项,而且这也没有多大意义:您几乎什么也得不到,特别是没有性能优势。

当您捕获帧时,您将拥有标准纹理,并且可以自由地对数据进行任何操作。具体来说,您可以提取投资回报率。您还可以根据 ROI 坐标检查 updated/moved 个矩形。您也可以映射纹理数据并将其作为字节数组处理。也就是说,裁剪相当容易,并且有多种方法可以做到这一点 - 这不是桌面复制 API 设计的任务。