如何在Windows上捕获桌面,以便捕获directX和正常渲染的屏幕部分?

简单的例子 – 一方面,我们看到通过标准软件呈现的相机呈现在另一方面的“input”(标记为“输出”)通过一些DirectX的东西呈现(至less在我看来):

在这里输入图像说明

那么windows api或者DirectX api提供了什么function来捕获这样的混合场景呢?

TightVNC服务器可以做到这一点,你可能想看看他们在做什么。 从简单的浏览源代码看来,他们正在创建一个虚拟屏幕,镜像主屏幕。 具体而言,请查看CreateCompatibleDCCreateDIBSection API

据我所知,虽然我们可以在屏幕上看到,但并没有直接捕获DirectX渲染区域的方法。 因为真正的渲染动作(又名渲染指令)发生在硬件层。 所以标准SDK中的API无法知道最终的渲染结果,导致黑场。

唯一的方法可能是把你的希望放在渲染层(如DirectX引擎)本身可以支持输出接口以及底层渲染动作。 所以我建议检查一下文档,以确定是否确实存在。

DirectX可以呈现给你的窗口的一个有限的部分,使您能够在更大的窗口中创建DX内容的小区域。