CUDA and OpenGL

Hi,

I am trying to get CUDA to accept my OpenGL Renderbuffer Object, but I always get an invalid argument error.

I have this rather simple code.

[codebox]

// do basic initialization

glGenFramebuffers(1, &frameBuffer);

glGenRenderbuffers(1, &depthBuffer);

glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer);

glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);

glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, windowWidth, windowHeight);

glBindRenderbuffer(GL_RENDERBUFFER, 0);

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);

glBindFramebuffer(GL_FRAMEBUFFER, 0);

// … do some additional initialization

cudaGLSetGLDevice(0);

cudaGraphicsGLRegisterImage(&cudaDepthMap, depthBuffer, GL_RENDERBUFFER, cudaGraphicsMapFlagsNone);[/codebox]

I have a valid CUDA Device, I have a valid renderbuffer and a complete framebuffer object.

I have tried searching the web, but I did not find an answer, that solves my problem.

Thank you in advance,

Markus

Hi,

I am trying to get CUDA to accept my OpenGL Renderbuffer Object, but I always get an invalid argument error.

I have this rather simple code.

[codebox]

// do basic initialization

glGenFramebuffers(1, &frameBuffer);

glGenRenderbuffers(1, &depthBuffer);

glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer);

glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer);

glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, windowWidth, windowHeight);

glBindRenderbuffer(GL_RENDERBUFFER, 0);

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);

glBindFramebuffer(GL_FRAMEBUFFER, 0);

// … do some additional initialization

cudaGLSetGLDevice(0);

cudaGraphicsGLRegisterImage(&cudaDepthMap, depthBuffer, GL_RENDERBUFFER, cudaGraphicsMapFlagsNone);[/codebox]

I have a valid CUDA Device, I have a valid renderbuffer and a complete framebuffer object.

I have tried searching the web, but I did not find an answer, that solves my problem.

Thank you in advance,

Markus

Same problem. But in my case I’m trying to register a color buffer.

If anyone figure out with cudaGraphicsGLRegisterImage returns invalid resource handle please let us know.

From my memory, but I am quite sure you can find it in the doc.

The opengl interoperability does not work for every buffer formats, and it was not working with GL_DEPTH_COMPONENT, at least in cuda 3

I agree, it is quite boring…

I use a texture instead of a render buffer object and works fine. Even the documentation saying that one can map render buffer objects, it keeps saying that it is a invalid resource.

BTW, I’m trying to register a render buffer as a color buffer, not depth.