]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/renderbuffer.cpp
Fix incorrect render target buffer names
[libs/gl.git] / source / core / renderbuffer.cpp
index 9af18daec9f1082ccd54c6e432e33a77478e9ed7..844fcd3a700e184a07538166e03925f2c848a1b6 100644 (file)
@@ -2,7 +2,7 @@
 #include <msp/gl/extensions/ext_framebuffer_multisample.h>
 #include <msp/gl/extensions/ext_framebuffer_object.h>
 #include <msp/gl/extensions/khr_debug.h>
-#include "misc.h"
+#include "deviceinfo.h"
 #include "renderbuffer.h"
 
 using namespace std;
@@ -30,19 +30,20 @@ void Renderbuffer::storage(PixelFormat fmt, unsigned wd, unsigned ht)
        require_pixelformat(fmt);
        width = wd;
        height = ht;
+       GLenum gl_fmt = get_gl_pixelformat(fmt);
        if(ARB_direct_state_access)
-               glNamedRenderbufferStorage(id, fmt, width, height);
+               glNamedRenderbufferStorage(id, gl_fmt, width, height);
        else
        {
-               BindRestore _bind(this);
-               glRenderbufferStorage(GL_RENDERBUFFER, fmt, width, height);
+               glBindRenderbuffer(GL_RENDERBUFFER, id);
+               glRenderbufferStorage(GL_RENDERBUFFER, gl_fmt, width, height);
+               glBindRenderbuffer(GL_RENDERBUFFER, 0);
        }
 }
 
 unsigned Renderbuffer::get_max_samples()
 {
-       static unsigned max_samples = (EXT_framebuffer_multisample ? get_i(GL_MAX_SAMPLES) : 0);
-       return max_samples;
+       return Limits::get_global().max_samples;
 }
 
 void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsigned wd, unsigned ht)
@@ -51,32 +52,22 @@ void Renderbuffer::storage_multisample(unsigned samples, PixelFormat fmt, unsign
                return storage(fmt, wd, ht);
 
        static Require _req(EXT_framebuffer_multisample);
-       if(samples>get_max_samples())
+       if(samples>Limits::get_global().max_samples)
                throw out_of_range("Renderbuffer::storage_multisample");
 
        require_pixelformat(fmt);
 
        width = wd;
        height = ht;
+       GLenum gl_fmt = get_gl_pixelformat(fmt);
        if(ARB_direct_state_access)
-               glNamedRenderbufferStorageMultisample(id, samples, fmt, width, height);
+               glNamedRenderbufferStorageMultisample(id, samples, gl_fmt, width, height);
        else
        {
-               BindRestore _bind(this);
-               glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, fmt, width, height);
-       }
-}
-
-void Renderbuffer::bind() const
-{
-       if(set_current(this))
                glBindRenderbuffer(GL_RENDERBUFFER, id);
-}
-
-void Renderbuffer::unbind()
-{
-       if(set_current(0))
+               glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, gl_fmt, width, height);
                glBindRenderbuffer(GL_RENDERBUFFER, 0);
+       }
 }
 
 void Renderbuffer::set_debug_name(const string &name)