从 Windows XP 开始,我就知道使用设备上下文和 GDI 进行屏幕捕获。现在桌面主要是 Direct3D,有没有更好的方法(即 DirectX?)。
如何使用 DirectX 进行屏幕截图?
我想知道用户模式屏幕捕获的最有效方法。对于需要频繁屏幕刮擦的技术支持程序。
更新:我不想求助于使用内核模式驱动程序。
从 Windows XP 开始,我就知道使用设备上下文和 GDI 进行屏幕捕获。现在桌面主要是 Direct3D,有没有更好的方法(即 DirectX?)。
如何使用 DirectX 进行屏幕截图?
我想知道用户模式屏幕捕获的最有效方法。对于需要频繁屏幕刮擦的技术支持程序。
更新:我不想求助于使用内核模式驱动程序。
基于 vcsjones 的回答(上图)。见 CodeProject http://www.codeproject.com/KB/dialog/screencap.aspx#And%20The%20DirectX%20way%20of%20doing%20it%20
我不确定这实际上会比您想到的算法更快,但一种方法是使用 GetRenderTargetData 复制您的缓冲区。
另一种方法是使用Spazzarama 的应用程序,该应用程序使用 DirectX(基于 SlimDx)和 Easyhook 将您的捕获 dll 注入正在运行的应用程序的 DirextX 管道中。