]> git.tdb.fi Git - libs/gl.git/blob - source/renderbuffer.cpp
Complete rewrite of extension handling
[libs/gl.git] / source / renderbuffer.cpp
1 #include "ext_framebuffer_multisample.h"
2 #include "ext_framebuffer_object.h"
3 #include "renderbuffer.h"
4
5 namespace Msp {
6 namespace GL {
7
8 Renderbuffer::Renderbuffer()
9 {
10         static Require _req(EXT_framebuffer_object);
11
12         glGenRenderbuffers(1, &id);
13 }
14
15 Renderbuffer::~Renderbuffer()
16 {
17         glDeleteRenderbuffers(1, &id);
18 }
19
20 void Renderbuffer::storage(PixelFormat fmt, unsigned wd, unsigned ht)
21 {
22         Bind _bind(this, true);
23         width = wd;
24         height = ht;
25         glRenderbufferStorage(GL_RENDERBUFFER, fmt, width, height);
26 }
27
28 void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht)
29 {
30         static Require _req(EXT_framebuffer_multisample);
31
32         Bind _bind(this, true);
33         width = wd;
34         height = ht;
35         glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, fmt, width, height);
36 }
37
38 void Renderbuffer::bind() const
39 {
40         if(set_current(this))
41                 glBindRenderbuffer(GL_RENDERBUFFER, id);
42 }
43
44 void Renderbuffer::unbind()
45 {
46         if(set_current(0))
47                 glBindRenderbuffer(GL_RENDERBUFFER, 0);
48 }
49
50 } // namespace GL
51 } // namespace Msp