]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderbuffer.h
Allow setting uniform values using a Uniform object
[libs/gl.git] / source / renderbuffer.h
index 7f9d7a422a0f5f6378075f2a0ed34622ad06f585..751374bd4a4258f70ca9afa74d1e16bf543b49a3 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007, 2009-2011  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_RENDERBUFFER_H_
 #define MSP_GL_RENDERBUFFER_H_
 
@@ -17,9 +10,11 @@ namespace GL {
 /**
 A Renderbuffer contains a single renderable image.  It can be attached to a
 Framebuffer to provide a logical buffer that is required to render the scene
-correctly but that is not needed as a texture later.
+correctly but that is not needed as a texture later.  Renderbuffers also
+provide a capability for multisampling, which is not available in textures.
 
-Requires the GL_EXT_framebuffer_object extension.
+Requires the GL_EXT_framebuffer_object extension.  Multisample renderbuffers
+additionally require the GL_EXT_framebuffer_multisample extension.
 */
 class Renderbuffer: public Bindable<Renderbuffer>
 {
@@ -36,8 +31,22 @@ public:
        unsigned get_width() const { return width; }
        unsigned get_height() const { return height; }
 
-       void storage(PixelFormat fmt, unsigned width, unsigned height);
-       void storage_multisample(unsigned, PixelFormat fmt, unsigned, unsigned);
+private:
+       static PixelFormat normalize_format(PixelFormat);
+
+public:
+       /** Allocates storage for the renderbuffer. */
+       void storage(PixelFormat fmt, unsigned wd, unsigned ht);
+
+       /** Returns the maximum supported sample count for multisampling.  If
+       multisampling is not supported, returns 0. */
+       static unsigned get_max_samples();
+
+       /** Allocates multisample storage for the renderbuffer.  All attachments in
+       a framebuffer must have the same number of samples.  To transfer the
+       contents to a texture for furter processing, use the framebuffer blit
+       functions.*/
+       void storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht);
 
        void bind() const;