From 54cfb3738f03699e61d862d2ad1804e79e5f2bd7 Mon Sep 17 00:00:00 2001 From: Bart van Strien Date: Mon, 27 Dec 2010 14:38:33 +0100 Subject: [PATCH] Applied itsnotabigtruck's fbo patch (issue #133) --- src/modules/graphics/opengl/Framebuffer.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/modules/graphics/opengl/Framebuffer.cpp b/src/modules/graphics/opengl/Framebuffer.cpp index 2b70ee4cf..2a4c48293 100644 --- a/src/modules/graphics/opengl/Framebuffer.cpp +++ b/src/modules/graphics/opengl/Framebuffer.cpp @@ -37,6 +37,10 @@ namespace opengl struct FramebufferStrategyGL3 : public FramebufferStrategy { virtual GLenum createFBO(GLuint& framebuffer, GLuint& depthbuffer, GLuint& img, int width, int height) { + // get currently bound fbo to reset to it later + GLint current_fbo; + glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, ¤t_fbo); + // generate depth buffer glGenRenderbuffers(1, &depthbuffer); glBindRenderbuffer(GL_RENDERBUFFER, depthbuffer); @@ -61,8 +65,8 @@ namespace opengl GL_RENDERBUFFER, depthbuffer); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - // unbind buffers and texture - glBindFramebuffer(GL_FRAMEBUFFER, 0); + // unbind framebuffer + glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)current_fbo); return status; } virtual void deleteFBO(GLuint framebuffer, GLuint depthbuffer, GLuint img) @@ -82,6 +86,9 @@ namespace opengl virtual GLenum createFBO(GLuint& framebuffer, GLuint& depthbuffer, GLuint& img, int width, int height) { + GLint current_fbo; + glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING_EXT, ¤t_fbo); + // generate depth buffer glGenRenderbuffersEXT(1, &depthbuffer); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer); @@ -106,8 +113,8 @@ namespace opengl GL_RENDERBUFFER_EXT, depthbuffer); GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); - // unbind buffers and texture - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + // unbind framebuffer + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, (GLuint)current_fbo); return status; }