]> git.tdb.fi Git - libs/gl.git/blobdiff - source/framebuffer.h
Support attaching 3D and 2DArray textures to Framebuffer
[libs/gl.git] / source / framebuffer.h
index f34ecf5c6eeea0204eaa685dfee5e7f4537e75b9..9b0360fb9354a19e428b98b7fc652b3c8d0ed951 100644 (file)
@@ -6,6 +6,7 @@
 #include "gl.h"
 #include "texturecube.h"
 #include <msp/gl/extensions/ext_framebuffer_object.h>
+#include <msp/gl/extensions/msp_stereo_rendering.h>
 
 namespace Msp {
 namespace GL {
@@ -13,6 +14,7 @@ namespace GL {
 class Renderbuffer;
 class Texture;
 class Texture2D;
+class Texture3D;
 
 enum FramebufferAttachment
 {
@@ -28,8 +30,8 @@ enum FramebufferStatus
 {
        FRAMEBUFFER_INCOMPLETE_ATTACHMENT         = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
        FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
-       FRAMEBUFFER_INCOMPLETE_DIMENSIONS         = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT,
-       FRAMEBUFFER_INCOMPLETE_FORMATS            = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT,
+       FRAMEBUFFER_INCOMPLETE_DIMENSIONS         = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
+       FRAMEBUFFER_INCOMPLETE_FORMATS            = GL_FRAMEBUFFER_INCOMPLETE_FORMATS,
        FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER        = GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER,
        FRAMEBUFFER_INCOMPLETE_READ_BUFFER        = GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER,
        FRAMEBUFFER_UNSUPPORTED                   = GL_FRAMEBUFFER_UNSUPPORTED,
@@ -40,8 +42,7 @@ enum BufferBits
 {
        COLOR_BUFFER_BIT   = GL_COLOR_BUFFER_BIT,
        DEPTH_BUFFER_BIT   = GL_DEPTH_BUFFER_BIT,
-       STENCIL_BUFFER_BIT = GL_STENCIL_BUFFER_BIT,
-       ACCUM_BUFFER_BIT   = GL_ACCUM_BUFFER_BIT
+       STENCIL_BUFFER_BIT = GL_STENCIL_BUFFER_BIT
 };
 
 enum RWBuffer
@@ -90,11 +91,11 @@ private:
                        Texture *tex;
                };
                unsigned level;
-               GLenum cube_face;
+               unsigned layer;
 
                Attachment(FramebufferAttachment);
                void set(Renderbuffer &);
-               void set(Texture &, GLenum, unsigned);
+               void set(Texture &, unsigned, unsigned);
                void clear();
        };
 
@@ -130,6 +131,7 @@ private:
 public:
        void attach(FramebufferAttachment attch, Renderbuffer &rbuf);
        void attach(FramebufferAttachment attch, Texture2D &tex, unsigned level = 0);
+       void attach(FramebufferAttachment attch, Texture3D &tex, unsigned layer, unsigned level = 0);
        void attach(FramebufferAttachment attch, TextureCube &tex, TextureCubeFace face, unsigned level = 0);
        void detach(FramebufferAttachment attch);