快速捕获屏幕并丢失Vsync

我想用一个自制的应用程序实时生成一部电影,快速进行屏幕捕获,部分屏幕由正在运行的3D应用程序占用。 我知道已经有几个应用程序(如FRAPS或Taksi),甚至专用的DirectShow过滤器(如UScreenCapture),但我真的需要使用我自己的外部应用程序。 正确设置(UScreenCapture + ffdshow)时,捕获压缩全屏不会消耗尽可能多的CPU(约15%),并且不会损害3D应用程序的性能。 从外部应用程序捕获的问题是3D应用程序丢失了它的Vsync并创建了一个毛茸茸,难以使用的3D应用程序(3D应用程序仅在屏幕的一小部分呈现,其余为GDI,DirectX) FRAPS允许您一次只捕获一个应用程序(具有焦点的应用程序),从而解决了这个问题。根据所使用的技术(OpenGl,DirectX,GDI),它会挂钩Vsync并进行捕获(使用glReadPixels,...),而不会产生干扰。 这样做并不能解决我的问题,因为我想要完整的合成屏幕图像(包括3D和其余部分)和流畅的3D应用程序。 UScreenCapture似乎使用快速的DirectX调用来捕获整个屏幕,但openGL 3D应用程序仍然不同步。 做一个BitBlt太慢了,CPU消耗完成实时30 fps采集(至少在Windows XP下,不确定7) 我的问题是要知道是否有办法通过Windows 7实现我的目标,它是全新的DirectX合成引擎? Windows 7成功显示每个应用程序(在任务栏中)的实时VSynced重复预览,因此必须有一种方法来访问当前显示的屏幕缓冲区而不会干扰3D OpenGL应用程序的呈现? 还有其他什么建议,技术? 谢谢     
已邀请:
我列出了可能有用的链接 http://betterlogic.com/roger/?p=3037 让我知道你是否有任何成功 - 最终我也会对Windows的快速开源屏幕截图感兴趣... 相关:最快的屏幕截图方法     

要回复问题请先登录注册