issues with frame buffer object (gbuffer)

Started by
4 comments, last by C0dR 10 years, 5 months ago
Hello,

i currently have a problem with my GBuffer. I draw to 3 textures in a Framebuffer object and then tried to show them with glBlitFramebuffer but i just dont see anyting. Even if I set everything to white in the shader the screen still stays black. I am rendering my meshes with a vertex array object.


Here you can find how i setup everything:

http://pastebin.com/BAiGeAPC


Am i making anything wrong in general or is there just a simple logical fail like forgot something to call?


greets

C0dR
Advertisement

I see some slight issues

glGenFramebuffers(1, &fbo);

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
-->
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);

http://www.opengl.org/sdk/docs/man/xhtml/glReadBuffer.xml

glReadBuffer is for glCopyTex* and glReadPixels

So you're reading from this,

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);

and you want to draw to this:

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

In my projects I use shaders to show the results of these operations, because of render-to-texture smile.png

Ok, so i changed the framebuffer creation to:


glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
[...]
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, bufferTextures[GBUFFER_TEXTURE_COLOR],0);
[...]


But it still doesn't work :(

In an other project with fixed pipeline functions it worked, but there i also draw the meshes with other functions ( glVertexPointer, glNormalPointer, glTexCoordPointer etc ). Maybe here lies the problem?

Use glCheckFramebufferStatus to check if the framebuffer is complete. Also I think the framebuffer's texture types should be the same size, GL_RGB and GL_RGBA is not good. I'm not sure if that's needed in new OpenGL versions though. Try to get it working with positions and depth first?

And what is this:


//clear error buffer
glGetError();

Really, check if there's some errors first, it helps a lot. Use gDebugger or some other OpenGL debugging software to check those errors, you can even see what kind of stuff your textures contain.

Derp

I see some slight issues

glGenFramebuffers(1, &fbo);

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
-->
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);

http://www.opengl.org/sdk/docs/man/xhtml/glReadBuffer.xml

glReadBuffer is for glCopyTex* and glReadPixels

So you're reading from this,

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);

and you want to draw to this:

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

In my projects I use shaders to show the results of these operations, because of render-to-texture smile.png

That reference is old. The wiki correctly shows the necessity of using glReadBuffer to set the attachment.

http://www.opengl.org/wiki/GLAPI/glReadBuffer

Have you tried a simple forward render using only diffuse color to check your array setup?

Are you checking framebuffer completeness like the guy that beat me to it said? :)

There's places to be checking for errors that are lacking said checks.

New C/C++ Build Tool 'Stir' (doesn't just generate Makefiles, it does the build): https://github.com/space222/stir

Ah yes the glGetError(); comes from copy & paste smile.png

Yes i already checked the framebuffer completeness and it says its complete.

Actually I already setup the gbuffer in an other project and it worked. But in that project i mainly used the fixed pipeline functions. So now i tried to implement it in my actual project, which uses modern opengl with custom matrices etc. Most of the code is just copy and paste, only uniforms and some variables and stuff were adapted. Thats why I'm so confused. I bet its a really stupid fail of myself in adapting the one project into the other.

I also tried to change the old mesh render methods (glNormalPointer, glVertexPointer etc) in the test project to vertex buffer object rendering and changed the shader so it uses locations instead of gl_FragData and it still worked. Now actually only the custom matrices (and some minor stuff) differ from the main project.

I dont get it, maybe i shall upload the whole project somewhere for you? I bet the error lies somewhere where i cant see it mellow.png

Well, when nothing works then i think i have to adapt the actual project to the test project part by part to see which of it causes the error unsure.png

This topic is closed to new replies.

Advertisement