CUDA和OpengGL之间的互操作是通过OpenGL的VBO对象实现的。在opengl中首先需要创建VBO对象并把数据传送到对应的VBO中。
CUDA使用VBO数据的过程其实就是三部分:获得数据的控制权->修改数据->将控制权交回OpenGL进行绘制
具体步骤:
1-> cudaGLSetGLDevice() 设置要操纵的显卡
2-> cudaGLRegisterBufferObject(vboid) 将VBO在cuda中注册
3-> cudaGLMapBufferObject((void**)&dptr, vboid) 获得VBO的数据指针
4-> 运行kernel。这里注意,如果想达到GLSL中那种vector的效果,可以使用vector_types.h里面的float4等类型。
5-> cudaGLUnmapBufferObject(vboid) 解除对数据的映射
6-> cudaGLUnregisterBufferObject(vboid) 注销VBO对象
现在刷新显示就可以了
学习了,楼主能具体一些嘛?不知一个显卡同时既opengl又cuda可以嘛
楼主能不能提供一个用cuda和opengl实现图像处理的实例,我正在学习,无从下手啊
同样期待。。