]> git.tdb.fi Git - libs/gl.git/blob - source/renderbuffer.h
Roll the various changed flags into a single mask
[libs/gl.git] / source / renderbuffer.h
1 #ifndef MSP_GL_RENDERBUFFER_H_
2 #define MSP_GL_RENDERBUFFER_H_
3
4 #include "bindable.h"
5 #include "pixelformat.h"
6
7 namespace Msp {
8 namespace GL {
9
10 /**
11 A Renderbuffer contains a single renderable image.  It can be attached to a
12 Framebuffer to provide a logical buffer that is required to render the scene
13 correctly but that is not needed as a texture later.  Renderbuffers also
14 provide a capability for multisampling, which is not available in textures.
15
16 Requires the GL_EXT_framebuffer_object extension.  Multisample renderbuffers
17 additionally require the GL_EXT_framebuffer_multisample extension.
18 */
19 class Renderbuffer: public Bindable<Renderbuffer>
20 {
21 private:
22         unsigned id;
23         unsigned width;
24         unsigned height;
25
26 public:
27         Renderbuffer();
28         ~Renderbuffer();
29
30         unsigned get_id() const { return id; }
31         unsigned get_width() const { return width; }
32         unsigned get_height() const { return height; }
33
34         /** Allocates storage for the renderbuffer. */
35         void storage(PixelFormat fmt, unsigned wd, unsigned ht);
36
37         /** Allocates multisample storage for the renderbuffer.  All attachments in
38         a framebuffer must have the same number of samples.  To transfer the
39         contents to a texture for furter processing, use the framebuffer blit
40         functions.*/
41         void storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht);
42
43         void bind() const;
44
45         static void unbind();
46 };
47
48 } // namespace GL
49 } // namespace Msp
50
51 #endif