Hi,
I am writing depth component to framebuffer which a render buffer attaches to. Then I am using glReadPixels to retrieve the depth from buffers. But gl gave me error ‘null’ from the call of glReadPixels
Here is the set up code snippet:
glGenFramebuffersEXT(1, &depth_fb);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, depth_fb);
glDrawBuffer(GL_NONE);
// create a renderbuffer object to store depth info
glGenRenderbuffersEXT(1, &depth_rb);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24,
depth_size, depth_size);
// attach the renderbuffer to depth attachment point
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
GL_RENDERBUFFER_EXT, depth_rb);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
// check FBO status
CheckFramebufferStatus();
The CheckFramebufferStatus() shows the framebuffer setup is o.k.
The following is the code snippet in the rendering loop to read depth from the buffer:
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, depth_fb);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24,
depth_size, depth_size);
// attach the renderbuffer to depth attachment point
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
GL_RENDERBUFFER_EXT, depth_rb);
glClear(GL_DEPTH_BUFFER_BIT);
DrawGeometry();
// read from frame buffer
int dataSize = depth_size* depth_size;
float* data = new float[dataSize];
glReadPixels(0, 0, depth_size, depth_size, GL_DEPTH_COMPONENT24, GL_FLOAT, data);
I searched for the answers but got no luck. Where am I doing wrong here?
Thanks.