Ben*_*enP 5 opengl fbo cuda depth-buffer
我想要做的是使用OpenGL执行一些渲染,然后使用CUDA直接对渲染的RGB和深度组件执行一些只读后处理(计算),而不将数据复制到PBO.
为此,我创建了一个FBO并将两个RBO连接到它(一个用于RGBA,另一个用于DEPTH).
然后,我使用GL_RENDERBUFFER作为参数为每个RBO调用cudaGraphicsGLRegisterImage.对于颜色RBO cudaGraphicsGLRegisterImage返回cudaSuccess,但对于深度RBO,我收到一个cudaErrorInvalidValue.
我已经在论坛中的某个地方读到过nvidia目前不支持CUDA为深度组件渲染缓冲区互操作,尽管它在文档中很好地存在.
我正在使用CUDA Toolkit 5.0,我有一张Quadro 2000卡.
有人成功地做了这个,怎么样?
以下是一些代码提取:
glGenRenderbuffers(1, &rbo_color);
glBindRenderbuffer(GL_RENDERBUFFER, rbo_color);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, WIDTH, HEIGHT);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
if (cudaGraphicsGLRegisterImage(&resource_color, rbo_color, GL_RENDERBUFFER, cudaGraphicsMapFlagsReadOnly) != cudaSuccess)
fprintf(stderr, "Error in registering rbo color with cuda\n");
glGenRenderbuffers(1, &rbo_depth);
glBindRenderbuffer(GL_RENDERBUFFER, rbo_depth);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, WIDTH, HEIGHT);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
if (cudaGraphicsGLRegisterImage(&resource_depth, rbo_depth, GL_RENDERBUFFER, cudaGraphicsMapFlagsReadOnly) != cudaSuccess)
fprintf(stderr, "Error in registering rbo depth with cuda\n");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
937 次 |
最近记录: |