]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/framebuffer_backend.cpp
Add missing destructor to OpenGLSampler
[libs/gl.git] / source / backends / opengl / framebuffer_backend.cpp
index 1adcb7f93515c2eef68b4419957704fb81640520..db1905d23394c50a2ffad1ebad7099fc8a9ea65c 100644 (file)
@@ -19,7 +19,6 @@ namespace Msp {
 namespace GL {
 
 OpenGLFramebuffer::OpenGLFramebuffer(bool is_system):
-       id(0),
        status(is_system ? GL_FRAMEBUFFER_COMPLETE : GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT)
 {
        if(!is_system)
@@ -39,37 +38,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 +67,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;