]> git.tdb.fi Git - libs/gl.git/blobdiff - source/framebuffer.h
Fix 3D texture loading with fixed depth
[libs/gl.git] / source / framebuffer.h
index 514208d6db161fd3635f39538760bc6435160b94..e33deda9218d9bf3afea690b44fc1e9dd6329bc1 100644 (file)
@@ -1,16 +1,10 @@
-/* $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_
 
 #include <vector>
 #include "bindable.h"
 #include "gl.h"
+#include "texturecube.h"
 
 namespace Msp {
 namespace GL {
@@ -86,11 +80,12 @@ private:
                        Renderbuffer *rbuf;
                        Texture *tex;
                };
-               int level;
+               unsigned level;
+               GLenum cube_face;
 
                Attachment(FramebufferAttachment);
                void set(Renderbuffer &);
-               void set(Texture &, int);
+               void set(Texture &, GLenum, unsigned);
                void clear();
        };
 
@@ -105,12 +100,16 @@ public:
        Framebuffer();
        ~Framebuffer();
 
+       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 attach(FramebufferAttachment attch, TextureCube &tex, TextureCubeFace face, unsigned level = 0);
        void detach(FramebufferAttachment attch);
 
        /**
@@ -121,6 +120,9 @@ 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;
 
@@ -130,9 +132,6 @@ public:
        static Framebuffer &system();
 private:
        unsigned get_attachment_index(FramebufferAttachment);
-
-public:
-       
 };
 
 inline BufferBits operator|(BufferBits a, BufferBits b)