]> git.tdb.fi Git - libs/gl.git/blob - source/backends/opengl/systemframebuffer.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / backends / opengl / systemframebuffer.cpp
1 #include <msp/gl/extensions/ext_framebuffer_object.h>
2 #include "gl.h"
3 #include "systemframebuffer.h"
4
5 namespace Msp {
6 namespace GL {
7
8 OpenGLSystemFramebuffer::OpenGLSystemFramebuffer():
9         Framebuffer(true)
10 {
11         FrameFormat sys_format;
12
13         if(EXT_framebuffer_object)
14         {
15                 int old_id;
16                 glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &old_id);
17                 if(old_id)
18                         glBindFramebuffer(GL_DRAW_FRAMEBUFFER_BINDING, 0);
19
20                 int value;
21                 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_BACK, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
22                 if(value==GL_NONE)
23                         glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_FRONT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
24                 if(value!=GL_NONE)
25                         sys_format = (sys_format, COLOR_ATTACHMENT);
26
27                 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_DEPTH, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
28                 if(value!=GL_NONE)
29                         sys_format = (sys_format, DEPTH_ATTACHMENT);
30
31                 glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &value);
32                 if(value!=GL_NONE)
33                         sys_format = (sys_format, STENCIL_ATTACHMENT);
34
35                 if(old_id)
36                         glBindFramebuffer(GL_DRAW_FRAMEBUFFER_BINDING, old_id);
37         }
38         else
39                 // Make a guess if we can't query the format
40                 sys_format = (COLOR_ATTACHMENT, DEPTH_ATTACHMENT);
41
42         set_system_format(sys_format);
43 }
44
45 void OpenGLSystemFramebuffer::resize(unsigned w, unsigned h)
46 {
47         resize_system(w, h);
48 }
49
50 } // namespace GL
51 } // namespace Msp