]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/framebuffer_backend.cpp
Restructure system framebuffer and make WindowView own it
[libs/gl.git] / source / backends / opengl / framebuffer_backend.cpp
index 1adcb7f93515c2eef68b4419957704fb81640520..b56499d1609186572a8ada56492163c0bfbfaf1b 100644 (file)
@@ -39,37 +39,9 @@ OpenGLFramebuffer::~OpenGLFramebuffer()
                glDeleteFramebuffers(1, &id);
 }
 
-FrameFormat OpenGLFramebuffer::get_system_format()
+void OpenGLFramebuffer::set_system_format(const FrameFormat &fmt)
 {
-       FrameFormat format;
-
-       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);
-       }
-
-       return format;
-}
-
-void OpenGLFramebuffer::get_system_size(unsigned &width, unsigned &height)
-{
-       int view[4];
-       glGetIntegerv(GL_VIEWPORT, view);
-       width = view[2];
-       height = view[3];
+       static_cast<Framebuffer *>(this)->format = fmt;
 }
 
 bool OpenGLFramebuffer::is_format_supported(const FrameFormat &fmt)
@@ -96,6 +68,13 @@ void OpenGLFramebuffer::require_layered()
        static Require _req(ARB_geometry_shader4);
 }
 
+void OpenGLFramebuffer::resize_system(unsigned w, unsigned h)
+{
+       Framebuffer *self = static_cast<Framebuffer *>(this);
+       self->width = w;
+       self->height = h;
+}
+
 void OpenGLFramebuffer::update(unsigned mask) const
 {
        const FrameFormat &format = static_cast<const Framebuffer *>(this)->format;