]> git.tdb.fi Git - libs/gl.git/blobdiff - source/framebuffer.cpp
Allocate textures attached to framebuffers automatically
[libs/gl.git] / source / framebuffer.cpp
index 77ac21be6b0e6ef76da3928247b54b2c69074c5b..a0fcbc474203c5588d04e410bf4d0975c49fa983 100644 (file)
@@ -62,7 +62,10 @@ void Framebuffer::update_attachment(unsigned mask) const
                                if(attch.type==GL_RENDERBUFFER_EXT)
                                        glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, GL_RENDERBUFFER_EXT, attch.rbuf->get_id());
                                else if(attch.type==GL_TEXTURE_2D)
+                               {
+                                       static_cast<Texture2D *>(attch.tex)->allocate(attch.level);
                                        glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attch.attachment, attch.type, attch.tex->get_id(), attch.level);
+                               }
                                else
                                        glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, 0, 0);
                        }
@@ -113,7 +116,7 @@ void Framebuffer::attach(FramebufferAttachment attch, Renderbuffer &rbuf)
        check_size();
 }
 
-void Framebuffer::attach(FramebufferAttachment attch, Texture2D &tex, int level)
+void Framebuffer::attach(FramebufferAttachment attch, Texture2D &tex, unsigned level)
 {
        if(!id)
                throw InvalidState("Can't attach to system framebuffer");
@@ -203,7 +206,7 @@ void Framebuffer::Attachment::set(Renderbuffer &r)
        level = 0;
 }
 
-void Framebuffer::Attachment::set(Texture &t, int l)
+void Framebuffer::Attachment::set(Texture &t, unsigned l)
 {
        type = t.get_target();
        tex = &t;