自从Windows XP以来,我已经知道使用Device Contexts和GDI进行屏幕捕获。现在桌面主要是Direct3D,是否有更好的方法(即DirectX?)?什么是最有效的屏幕截图方式?使用DirectX捕获屏幕?
如何使用DirectX截屏?
我想知道用户模式屏幕捕获最有效的方法。对于需要经常屏幕擦除的技术支持计划。
UPDATE:我不想诉诸使用内核模式驱动程序。
自从Windows XP以来,我已经知道使用Device Contexts和GDI进行屏幕捕获。现在桌面主要是Direct3D,是否有更好的方法(即DirectX?)?什么是最有效的屏幕截图方式?使用DirectX捕获屏幕?
如何使用DirectX截屏?
我想知道用户模式屏幕捕获最有效的方法。对于需要经常屏幕擦除的技术支持计划。
UPDATE:我不想诉诸使用内核模式驱动程序。
基于vcsjones回答(上文)。查看CodeProject http://www.codeproject.com/KB/dialog/screencap.aspx#And%20The%20DirectX%20way%20of%20doing%20it%20
我不确定这实际上比您想到的算法快,但一种方法是使用GetRenderTargetData复制您的缓冲区。
另一种方法是使用Spazzarama's应用程序,该应用程序使用DirectX(基于SlimDx)和Easyhook将Capture DLL注入正在运行的应用程序的DirextX管道。
这是一个合理的例子,关于如何做到这一点:http://www.codeproject.com/KB/dialog/screencap.aspx#And%20The%20DirectX%20way%20of%20doing%20it%20: – vcsjones 2011-05-02 21:11:56