]> git.tdb.fi Git - libs/gl.git/blob - source/renderbuffer.cpp
bd37aeea2bc59b460bbf17d4ecc32351bdfbe8dd
[libs/gl.git] / source / renderbuffer.cpp
1 /* $Id$
2
3 This file is part of libmspgl
4 Copyright © 2007-2011  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "extension.h"
9 #include "ext_framebuffer_multisample.h"
10 #include "ext_framebuffer_object.h"
11 #include "renderbuffer.h"
12
13 namespace Msp {
14 namespace GL {
15
16 Renderbuffer::Renderbuffer()
17 {
18         static RequireExtension _ext("GL_EXT_framebuffer_object");
19
20         glGenRenderbuffersEXT(1, &id);
21 }
22
23 Renderbuffer::~Renderbuffer()
24 {
25         glDeleteRenderbuffersEXT(1, &id);
26 }
27
28 void Renderbuffer::storage(PixelFormat fmt, unsigned w, unsigned h)
29 {
30         Bind _bind(this, true);
31         width = w;
32         height = h;
33         glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, fmt, width, height);
34 }
35
36 void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsigned w, unsigned h)
37 {
38         static RequireExtension _ext("GL_EXT_framebuffer_multisample");
39
40         Bind _bind(this, true);
41         width = w;
42         height = h;
43         glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, samples, fmt, width, height);
44 }
45
46 void Renderbuffer::bind() const
47 {
48         if(set_current(this))
49                 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, id);
50 }
51
52 void Renderbuffer::unbind()
53 {
54         if(set_current(0))
55                 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
56 }
57
58 } // namespace GL
59 } // namespace Msp