🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Fail to read the offscreen buffer

Started by
-1 comments, last by SagoO 13 years, 2 months ago
HI,

I have create a offscreen rendering buffer. I have a fragment program jz simple as this:


static const char *fragment_source = {

"void main(void)"
"{"
"gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);"
"}"



Then, I create a offscreen rendering FBO:


/*Create a fbo to perform offscreen rendering*/
glGenFramebuffersEXT(1,&fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fbo);

/*Create render object*/
glGenRenderbuffersEXT(1,&renderbuffer);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT,renderbuffer);

glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_RGBA,noOfpacket,size);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_RENDERBUFFER_EXT,renderbuffer);

status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);

switch(status)
{
case GL_FRAMEBUFFER_COMPLETE_EXT:
printf("***FBO complete***\n\n");
break;
default:
fprintf(stderr, "Error: %s\n", gluErrorString(status));
break;
}

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fbo);


Then, I read the buffer:


/*Read values back*/
/*Set the target framebuffer to read*/
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);

/*Read pixels from framebuffer to CPU buffer*/
glReadPixels(0,0,size,noOfpacket,GL_RGBA,GL_UNSIGNED_BYTE,result);
checkError("glReadPixels error!");
printf("Data in frame buffer:\n");
for (i=0;i<noOfpacket*size;i++)
printf("%d",result);
printf("\n\n");

glBindRenderbufferEXT(GL_RENDERBUFFER_EXT,0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0);


Well. I got all zeros all the time in the frame buffer. That is impossible since my fragment should output something. I never unbound my FBO. So, the shader should render to the offscreen FBO. Any one face this problem before?

Help please.... Thank for your reply.

This topic is closed to new replies.

Advertisement