1 #ifndef MSP_GL_RENDERBUFFER_H_
2 #define MSP_GL_RENDERBUFFER_H_
5 #include "pixelformat.h"
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.
16 Requires the GL_EXT_framebuffer_object extension. Multisample renderbuffers
17 additionally require the GL_EXT_framebuffer_multisample extension.
19 class Renderbuffer: public Bindable<Renderbuffer>
30 unsigned get_id() const { return id; }
31 unsigned get_width() const { return width; }
32 unsigned get_height() const { return height; }
35 static PixelFormat normalize_format(PixelFormat);
38 /** Allocates storage for the renderbuffer. */
39 void storage(PixelFormat fmt, unsigned wd, unsigned ht);
41 /** Returns the maximum supported sample count for multisampling. If
42 multisampling is not supported, returns 0. */
43 static unsigned get_max_samples();
45 /** Allocates multisample storage for the renderbuffer. All attachments in
46 a framebuffer must have the same number of samples. To transfer the
47 contents to a texture for furter processing, use the framebuffer blit
49 void storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht);