I been trying to wrap my head around trasnfering data from my FBO to a PBO to a texture to render it to a QUAD:

Code :
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorAttachment0, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthAttachment);

To my PBO:

Code :
glGenBuffers(1, &bufferObj);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, bufferObj);
glBufferData(GL_PIXEL_UNPACK_BUFFER, 800 * 800 * 4, NULL, GL_DYNAMIC_DRAW);

But I try to transfer it like this: (*which is where the ISSUE IS *) .. my guess

Code :
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, bufferObj);
glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
glReadBuffer(GL_NONE);

I have code that renders out a PBO from CUDA .. transfers it to a texture, and it displays it correctly And I can render out my FBO by rendering its texture to a quad as well

The issue is the transferring between the FBO to the PBO it seems to to function correctly, since when I replace the render FBO->PBO code it does not work correctly