(CUDA , Desktop capture , Screen capture , windows ,VC ,GPU ...)
利用CUDA录制windows桌面的方法是不存在的。至少目前我没找到。
Added at 2013/10/11 :
Windows 8 only, IDXGIOutputDuplication 可以在GPU里面获取桌面surface,之后再用CUDA传送到CPU。
参考例子下载:点击打开链接
Windows8中:Windows 8 disables standard Windows 2000 Display Driver Model (XDDM) mirror drivers and offers the desktop duplication API instead
MS没有开放在GPU中获取桌面surface的接口,可能是为了保证刷新率吧,获取surface的函数是有加锁的。
抓取windows桌面图像主要有4种方法:
1,GDI
2,Direct 3D
3,Window Media Encoder API
4,mirror driver
后两种没用过,前两种性能是差不多的,但是GDI允许多线程抓取,D3D可以多线程抓取,但是GetSurface会加锁,因此多线程和单线程没什么区别。
so,如果想提升抓取的FPS的话,有两种方法:
1,补帧
2,GDI 多线程
PS:值得注意的是WIN7 关掉桌面玻璃效果,FPS会大大提升。
PS2:写了一个DEMO,VS2012的工程,代码地址:OS_DesktopCapture