From 50897e0dc03127de94c7c9371ec259c412f88b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 30 Jun 2014 01:13:24 +0200 Subject: [PATCH] Reset also viewport to default framebuffer on named FB destruction. In text example the scene was rendered with viewport used for distance field computation, which is wrong. Also amazingly enough that worked until now. --- src/Magnum/Framebuffer.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Magnum/Framebuffer.cpp b/src/Magnum/Framebuffer.cpp index 1c707507e..cf028c4de 100644 --- a/src/Magnum/Framebuffer.cpp +++ b/src/Magnum/Framebuffer.cpp @@ -28,6 +28,7 @@ #include #include "Magnum/Context.h" +#include "Magnum/DefaultFramebuffer.h" #include "Magnum/Extensions.h" #include "Magnum/Image.h" #include "Magnum/Renderbuffer.h" @@ -92,7 +93,17 @@ Framebuffer::~Framebuffer() { /* If bound, remove itself from state */ Implementation::FramebufferState* state = Context::current()->state().framebuffer; if(state->readBinding == _id) state->readBinding = 0; - if(state->drawBinding == _id) state->drawBinding = 0; + + /* For draw binding reset also viewport */ + if(state->drawBinding == _id) { + state->drawBinding = 0; + + /** + * @todo Less ugly solution (need to call setViewportInternal() to + * reset the viewport to size of default framebuffer) + */ + defaultFramebuffer.bind(FramebufferTarget::Draw); + } glDeleteFramebuffers(1, &_id); }