1 #include <msp/gl/extensions/arb_direct_state_access.h>
2 #include <msp/gl/extensions/ext_framebuffer_multisample.h>
3 #include <msp/gl/extensions/ext_framebuffer_object.h>
4 #include "renderbuffer.h"
9 Renderbuffer::Renderbuffer()
11 static Require _req(EXT_framebuffer_object);
13 if(ARB_direct_state_access)
14 glCreateRenderbuffers(1, &id);
16 glGenRenderbuffers(1, &id);
19 Renderbuffer::~Renderbuffer()
21 glDeleteRenderbuffers(1, &id);
24 void Renderbuffer::storage(PixelFormat fmt, unsigned wd, unsigned ht)
26 require_pixelformat(fmt);
29 if(ARB_direct_state_access)
30 glNamedRenderbufferStorage(id, fmt, width, height);
33 BindRestore _bind(this);
34 glRenderbufferStorage(GL_RENDERBUFFER, fmt, width, height);
38 void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht)
40 static Require _req(EXT_framebuffer_multisample);
41 require_pixelformat(fmt);
45 if(ARB_direct_state_access)
46 glNamedRenderbufferStorageMultisample(id, samples, fmt, width, height);
49 BindRestore _bind(this);
50 glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, fmt, width, height);
54 void Renderbuffer::bind() const
57 glBindRenderbuffer(GL_RENDERBUFFER, id);
60 void Renderbuffer::unbind()
63 glBindRenderbuffer(GL_RENDERBUFFER, 0);