]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/sampler_backend.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / backends / opengl / sampler_backend.cpp
index 85d278d3a1a1da75d4d098ea1aeb6457a5ae18c1..31dcc6bcf0f48b5b18a06625fc02cb5f9c3c8d33 100644 (file)
@@ -25,6 +25,18 @@ OpenGLSampler::OpenGLSampler()
                glGenSamplers(1, &id);
 }
 
+OpenGLSampler::OpenGLSampler(OpenGLSampler &&other):
+       id(other.id)
+{
+       other.id = 0;
+}
+
+OpenGLSampler::~OpenGLSampler()
+{
+       if(id)
+               glDeleteSamplers(1, &id);
+}
+
 bool OpenGLSampler::check_anisotropic(bool require)
 {
        if(require)
@@ -34,26 +46,26 @@ bool OpenGLSampler::check_anisotropic(bool require)
 
 void OpenGLSampler::update(unsigned mask) const
 {
-       const Sampler *self = static_cast<const Sampler *>(this);
+       const Sampler &self = *static_cast<const Sampler *>(this);
        if(mask&Sampler::MIN_FILTER)
-               glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, get_gl_filter(self->min_filter));
+               glSamplerParameteri(id, GL_TEXTURE_MIN_FILTER, get_gl_filter(self.min_filter));
        if(mask&Sampler::MAG_FILTER)
-               glSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, get_gl_filter(self->mag_filter));
+               glSamplerParameteri(id, GL_TEXTURE_MAG_FILTER, get_gl_filter(self.mag_filter));
        if(mask&Sampler::MAX_ANISOTROPY)
-               glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, self->max_anisotropy);
+               glSamplerParameterf(id, GL_TEXTURE_MAX_ANISOTROPY_EXT, self.max_anisotropy);
        if(mask&Sampler::WRAP_S)
-               glSamplerParameteri(id, GL_TEXTURE_WRAP_S, get_gl_wrap(self->wrap_s));
+               glSamplerParameteri(id, GL_TEXTURE_WRAP_S, get_gl_wrap(self.wrap_s));
        if(mask&Sampler::WRAP_T)
-               glSamplerParameteri(id, GL_TEXTURE_WRAP_T, get_gl_wrap(self->wrap_t));
+               glSamplerParameteri(id, GL_TEXTURE_WRAP_T, get_gl_wrap(self.wrap_t));
        if(mask&Sampler::WRAP_R)
-               glSamplerParameteri(id, GL_TEXTURE_WRAP_R, get_gl_wrap(self->wrap_r));
+               glSamplerParameteri(id, GL_TEXTURE_WRAP_R, get_gl_wrap(self.wrap_r));
        if(mask&Sampler::BORDER_COLOR)
-               glSamplerParameterfv(id, GL_TEXTURE_BORDER_COLOR, &self->border_color.r);
+               glSamplerParameterfv(id, GL_TEXTURE_BORDER_COLOR, &self.border_color.r);
        if(mask&Sampler::COMPARE)
        {
-               glSamplerParameteri(id, GL_TEXTURE_COMPARE_MODE, (self->compare ? GL_COMPARE_R_TO_TEXTURE : GL_NONE));
-               if(self->compare)
-                       glSamplerParameteri(id, GL_TEXTURE_COMPARE_FUNC, get_gl_predicate(self->cmp_func));
+               glSamplerParameteri(id, GL_TEXTURE_COMPARE_MODE, (self.compare ? GL_COMPARE_R_TO_TEXTURE : GL_NONE));
+               if(self.compare)
+                       glSamplerParameteri(id, GL_TEXTURE_COMPARE_FUNC, get_gl_predicate(self.cmp_func));
        }
 }