1 #include <msp/gl/extensions/ext_framebuffer_object.h>
3 #include "systemframebuffer.h"
8 OpenGLSystemFramebuffer::OpenGLSystemFramebuffer():
11 FrameFormat sys_format;
13 if(EXT_framebuffer_object)
16 glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &old_id);
18 glBindFramebuffer(GL_DRAW_FRAMEBUFFER_BINDING, 0);
21 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_BACK, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
23 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_FRONT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
25 sys_format = (sys_format, COLOR_ATTACHMENT);
27 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_DEPTH, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
29 sys_format = (sys_format, DEPTH_ATTACHMENT);
31 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
33 sys_format = (sys_format, STENCIL_ATTACHMENT);
36 glBindFramebuffer(GL_DRAW_FRAMEBUFFER_BINDING, old_id);
39 // Make a guess if we can't query the format
40 sys_format = (COLOR_ATTACHMENT, DEPTH_ATTACHMENT);
42 set_system_format(sys_format);
45 void OpenGLSystemFramebuffer::resize(unsigned w, unsigned h)