]> git.tdb.fi Git - libs/gl.git/blobdiff - source/framebuffer.h
Drop Id tags and copyright notices from files
[libs/gl.git] / source / framebuffer.h
index b4f43f77f47473a12381eb499eb13a3c6d658c13..3d3ec088138f9d4b50d675ead1d0b73807277212 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_FRAMEBUFFER_H_
 #define MSP_GL_FRAMEBUFFER_H_
 
@@ -86,27 +79,34 @@ private:
                        Renderbuffer *rbuf;
                        Texture *tex;
                };
+               unsigned level;
 
                Attachment(FramebufferAttachment);
-               Attachment &operator=(Renderbuffer &);
-               Attachment &operator=(Texture &);
+               void set(Renderbuffer &);
+               void set(Texture &, unsigned);
+               void clear();
        };
 
        unsigned id;
        std::vector<Attachment> attachments;
        unsigned width;
        unsigned height;
+       mutable unsigned dirty;
 
-       static int sys_viewport[4];
-
+       Framebuffer(unsigned);
 public:
        Framebuffer();
        ~Framebuffer();
 
-       void bind() const;
+       unsigned get_width() const { return width; }
+       unsigned get_height() const { return height; }
 
+private:
+       void update_attachment(unsigned) const;
+       void check_size();
+public:
        void attach(FramebufferAttachment attch, Renderbuffer &rbuf);
-       void attach(FramebufferAttachment attch, Texture2D &tex, int level);
+       void attach(FramebufferAttachment attch, Texture2D &tex, unsigned level = 0);
        void detach(FramebufferAttachment attch);
 
        /**
@@ -116,21 +116,24 @@ public:
        */
        FramebufferStatus check_status() const;
 
+       void clear(BufferBits);
+       void blit_from(const Framebuffer &, int, int, int, int, int, int, int, int, BufferBits, bool);
+       void blit_from(const Framebuffer &, int, int, unsigned, unsigned, int, int, BufferBits);
+       void blit_from(const Framebuffer &, BufferBits, bool);
+
+       void bind() const;
+
+       static const Framebuffer *current();
        static void unbind();
+
+       static Framebuffer &system();
 private:
-       void maybe_bind() const;
-       Attachment &get_or_create_attachment(FramebufferAttachment);
-       void check_size();
+       unsigned get_attachment_index(FramebufferAttachment);
 };
 
 inline BufferBits operator|(BufferBits a, BufferBits b)
 { return static_cast<BufferBits>(static_cast<int>(a)|static_cast<int>(b)); }
 
-void viewport(int, int, unsigned, unsigned);
-void clear(BufferBits);
-void draw_buffer(RWBuffer);
-void read_buffer(RWBuffer);
-
 } // namespace GL
 } // namespace Msp