X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fcore%2Fframebuffer.cpp;h=576552057fda35df9e954d0cebce32b8107f0c86;hb=b09f265880a3a932441091b0f3822b06c112c595;hp=1dd2f61f9bab10139772b8619075370df41b2849;hpb=ad574f042d59513eec36af64c38aaf9abe6deed2;p=libs%2Fgl.git diff --git a/source/core/framebuffer.cpp b/source/core/framebuffer.cpp index 1dd2f61f..57655205 100644 --- a/source/core/framebuffer.cpp +++ b/source/core/framebuffer.cpp @@ -10,7 +10,6 @@ #include #include "error.h" #include "framebuffer.h" -#include "misc.h" #include "texture2d.h" #include "texture2dmultisample.h" #include "texture3d.h" @@ -34,6 +33,24 @@ Framebuffer::Framebuffer(unsigned i): if(id) throw invalid_argument("System framebuffer must have id 0"); + if(EXT_framebuffer_object) + { + int value; + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_BACK, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value==GL_NONE) + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_FRONT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + format = (format,COLOR_ATTACHMENT); + + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_DEPTH, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + format = (format,DEPTH_ATTACHMENT); + + glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + format = (format,STENCIL_ATTACHMENT); + } + int view[4]; glGetIntegerv(GL_VIEWPORT, view); width = view[2]; @@ -80,7 +97,7 @@ Framebuffer::~Framebuffer() void Framebuffer::set_format(const FrameFormat &fmt) { - if(!format.empty()) + if(!format.empty() || !id) throw invalid_operation("Framebuffer::set_format"); if(fmt.empty()) throw invalid_argument("Framebuffer::set_format");