-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#include "extension.h"
-#include "ext_framebuffer_object.h"
+#include <msp/gl/extensions/ext_framebuffer_multisample.h>
+#include <msp/gl/extensions/ext_framebuffer_object.h>
#include "renderbuffer.h"
namespace Msp {
Renderbuffer::Renderbuffer()
{
- require_extension("GL_EXT_framebuffer_object");
+ static Require _req(EXT_framebuffer_object);
- glGenRenderbuffersEXT(1, &id);
- bind();
+ glGenRenderbuffers(1, &id);
}
Renderbuffer::~Renderbuffer()
{
- glDeleteRenderbuffersEXT(1, &id);
+ glDeleteRenderbuffers(1, &id);
+}
+
+void Renderbuffer::storage(PixelFormat fmt, unsigned wd, unsigned ht)
+{
+ require_pixelformat(fmt);
+ BindRestore _bind(this);
+ width = wd;
+ height = ht;
+ glRenderbufferStorage(GL_RENDERBUFFER, fmt, width, height);
+}
+
+void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht)
+{
+ static Require _req(EXT_framebuffer_multisample);
+ require_pixelformat(fmt);
+
+ BindRestore _bind(this);
+ width = wd;
+ height = ht;
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, fmt, width, height);
}
void Renderbuffer::bind() const
{
- glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, id);
+ if(set_current(this))
+ glBindRenderbuffer(GL_RENDERBUFFER, id);
}
-void Renderbuffer::storage(PixelFormat fmt, sizei width, sizei height)
+void Renderbuffer::unbind()
{
- bind();
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, fmt, width, height);
+ if(set_current(0))
+ glBindRenderbuffer(GL_RENDERBUFFER, 0);
}
} // namespace GL