X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fsystemframebuffer.cpp;fp=source%2Fbackends%2Fopengl%2Fsystemframebuffer.cpp;h=dbfe0b823b77f3333ef9bef0f36d2f421a86947a;hb=b9e720f36185c6fe4d39a1056ecb88dec0ce950d;hp=0000000000000000000000000000000000000000;hpb=4080571d24c1734a9188ee7fac38cf3180325adf;p=libs%2Fgl.git diff --git a/source/backends/opengl/systemframebuffer.cpp b/source/backends/opengl/systemframebuffer.cpp new file mode 100644 index 00000000..dbfe0b82 --- /dev/null +++ b/source/backends/opengl/systemframebuffer.cpp @@ -0,0 +1,43 @@ +#include +#include "gl.h" +#include "systemframebuffer.h" + +namespace Msp { +namespace GL { + +OpenGLSystemFramebuffer::OpenGLSystemFramebuffer(): + Framebuffer(true) +{ + FrameFormat sys_format; + + if(EXT_framebuffer_object) + { + int value; + glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_BACK, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value==GL_NONE) + glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_FRONT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + sys_format = (sys_format, COLOR_ATTACHMENT); + + glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_DEPTH, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + sys_format = (sys_format, DEPTH_ATTACHMENT); + + glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value); + if(value!=GL_NONE) + sys_format = (sys_format, STENCIL_ATTACHMENT); + } + else + // Make a guess if we can't query the format + sys_format = (COLOR_ATTACHMENT, DEPTH_ATTACHMENT); + + set_system_format(sys_format); +} + +void OpenGLSystemFramebuffer::resize(unsigned w, unsigned h) +{ + resize_system(w, h); +} + +} // namespace GL +} // namespace Msp