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

时间:2011-06-04 11:34:10

标签: c++ windows directx screenshot

简单的例子 - 一方面我们看到通过标准软件渲染的相机渲染“输入”另一方面(标记为“输出”)通过一些directX的东西呈现(至少在我看来):

enter image description here

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

正如我所知,虽然我们可以在屏幕上看到,但没有直接的方法来捕获DirectX渲染区域。因为真实的渲染动作(也就是渲染指令)发生在硬件层。因此标准SDK中的API无法知道最终渲染结果,这会导致黑色方块。

执行此操作的唯一方法可能是希望Render层(例如DirectX引擎)本身可以支持输出接口以及底层渲染操作。因此,我建议查看一些文档,以确定是否存在。

答案 2 :(得分:1)

DirectX可以呈现给您提供的窗口的有限子部分,使您能够在较大的窗口中创建DX内容的小区域。