新手想学CUDA,想了解几个问题,诚心求指点一二..

blink31 2014-01-22 05:01:52
我是做一些简单图像处理方面的,比如界面程序、相机拍照、视频播放器等,用过OpenGL、D3D做渲染

我想了解的是,CUDA能与D3D结合在一起吗? 用CUDA的GPU做运算,D3D做渲染(新手实在不懂,冒昧了)

CUDA能获取桌面数据吗(比如达到高效率大分辨率实时截屏等)

分不多了,诚心请教,望各位前辈指点一二,小弟不胜感激,谢谢!
...全文
282 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
blink31 2014-01-24
  • 打赏
  • 举报
回复
说错了,是GDI和DX的截屏效率太慢
blink31 2014-01-24
  • 打赏
  • 举报
回复
引用 5 楼 mengzai2 的回复:
没能太明白你的意思,你是想用你的应用程序像QQ截屏那样截取整个屏幕么? 你要是截整个屏幕,这个我也不太懂,但你若要是用要对你的应用程序渲染的场景进行截屏还是没问题的,但是不是用CUDA,用OPENGL或DX,你用OPENGL的FBO将当前渲染场景保存成纹理就好,CUDA主要是用来做大规模并行计算的,它并不是图形图像的API
FBO我也知道,可以把程序渲染的内容绑定到一张纹理上。 因为我还没接触过CUDA,我在想它会不会有取出桌面数据(截取桌面画面)的功能,我对这个有很大的要求,GDI和DX的截屏都满足效率,mirror drv驱动截屏我也实现了,效率很高但是仍然会有不稳定因素 CUDA可以取出显卡里面即将渲染的内容吗?或者说CUDA可以实现桌面截屏吗?
mengzai2 2014-01-24
  • 打赏
  • 举报
回复
没能太明白你的意思,你是想用你的应用程序像QQ截屏那样截取整个屏幕么? 你要是截整个屏幕,这个我也不太懂,但你若要是用要对你的应用程序渲染的场景进行截屏还是没问题的,但是不是用CUDA,用OPENGL或DX,你用OPENGL的FBO将当前渲染场景保存成纹理就好,CUDA主要是用来做大规模并行计算的,它并不是图形图像的API
blink31 2014-01-24
  • 打赏
  • 举报
回复
引用 3 楼 mengzai2 的回复:
能够结合使用,主要用纹理内存,对纹理进行高斯之类这样的image process
CUDA能实现桌面截屏吗?
blink31 2014-01-24
  • 打赏
  • 举报
回复
引用 8 楼 mengzai2 的回复:
说实话,我也不知道这个具体怎么做,只是刚刚花了点时间看了下,CUDA是没法直接获取整个desktop的buffer的,在网上找了下,截屏的主要方法有GDI,Direct 3D,Window Media Encoder API,mirror driver这四种,你现在用的GDI,Direct 3D这两种方法如果要优化的也只能多线程优化(系统线程那种),如果你要用CUDA的话,我觉得只能先用D3D的GetFrontBufferData获取到桌面的surface,然后再将这个surface与CUDA资源进行绑定,参见CUDA的Direct3D 11 Interoperability的手册,最后将这个资源用CUDA拷贝回CPU端进行保存。这个方法只是我个人想的,不知道是否可行,是否能提高效率,经供参考
正如你所说,多线程去获取桌面buffer,我也尝试过了,仍然不行。。四种截屏方式我只有Window Media Encoder API没试过了,如果CUDA只是并行运行处理的话,应该在截屏的效率方面起不了多少作用。 GetFrontBufferData在截取1920*1080大小分辨率的桌面需要耗时50ms以上,虽稳定但效率实在不行;GDI截屏也差不多;mirror driver倒是速度超快,1-5ms即可,但是需要安装虚拟显卡而且不稳定系数高,安装虚显后需要重启计算机。这些都不理想,不过还是挺感谢您的,花了宝贵的时间帮我查资料、回帖,谢谢!
mengzai2 2014-01-24
  • 打赏
  • 举报
回复
说实话,我也不知道这个具体怎么做,只是刚刚花了点时间看了下,CUDA是没法直接获取整个desktop的buffer的,在网上找了下,截屏的主要方法有GDI,Direct 3D,Window Media Encoder API,mirror driver这四种,你现在用的GDI,Direct 3D这两种方法如果要优化的也只能多线程优化(系统线程那种),如果你要用CUDA的话,我觉得只能先用D3D的GetFrontBufferData获取到桌面的surface,然后再将这个surface与CUDA资源进行绑定,参见CUDA的Direct3D 11 Interoperability的手册,最后将这个资源用CUDA拷贝回CPU端进行保存。这个方法只是我个人想的,不知道是否可行,是否能提高效率,经供参考
blink31 2014-01-23
  • 打赏
  • 举报
回复
自己顶下 !!!
mengzai2 2014-01-23
  • 打赏
  • 举报
回复
能够结合使用,主要用纹理内存,对纹理进行高斯之类这样的image process
blink31 2014-01-22
  • 打赏
  • 举报
回复
前辈们,能不能说点什么。。。。

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧