在Motion capture中openGL与CUDA的问题?

在近些年的Motion capture中,利用GPU加速越来越火。一直有个疑问,假设我要在每个线程中产生一个人的模型,从而得到像素信息,并把该信息与相机采集的图像进行比较。CUDA的每个线程中应该不可以调用OpenGL来产生人的模型吧(openGL中的函数一般认为是主机函数,核函数中不可以调用主机函数)。那产生这样的模型要自己实现吗?一般别人的文章里也不会有具体的实现方法。关于openGL与CUDA的互操作,似乎也只是显示上问题,并没有提到过openGL产生数据供CUDA使用的例子。

不懂OpenGL, 无法提供意见。建议TianYuan和PengWang来帮助您。(如果他们能看到的话。:))

CUDA不能够调用OPENGL的函数,所以这个必须自己实现。
还有对于楼主所说的OPENGL产生数据这点我不太理解…OPENGL只是将顶点、像素数据交给GPU处理并生成图像的过程,说白了就是我们要通过OPENGL与GPU交互,将场景数据显示成为图像,所以OPENGL如何产生数据这点不太理解…一般情况都是CUDA将数据处理好交给GOPENGL,再由OPENGL驱动GPU显示

我的意思是指openGL产生模型(比如一个圆柱,一个球)后,可以通过读取相应的缓冲区来获得相应的数据(如读取深度缓冲区得到深度信息)

顺便问个问题,CUDA不可以调用OPENGL,openCL可以吗?

OPENCL我想应该也不行。
你用OPENGL生成的模型,可以把缓冲区中的数据复制到GPU内存空间,然后让GPU处理就可以了!

这种方法之前试过,问题在于
1、初衷是想并行的产生很多模型,这样模型就只能一个一个串行的产生。
2、数据从缓冲区读出来再拷贝回GPU是一笔很大的开销,而且如果模型很多的话,一次拷贝的数据量也很大。
我自己也尝试过实现openGL的一些基本功能,但效率比较低,各种纠结啊。