X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fsampler_backend.cpp;h=31dcc6bcf0f48b5b18a06625fc02cb5f9c3c8d33;hb=HEAD;hp=be3f67cbc37ae688bbf5cd776ae8642c1e11a40c;hpb=66b944b448c3e500d5c641bfad6e18b126f3372a;p=libs%2Fgl.git diff --git a/source/backends/opengl/sampler_backend.cpp b/source/backends/opengl/sampler_backend.cpp index be3f67cb..31dcc6bc 100644 --- a/source/backends/opengl/sampler_backend.cpp +++ b/source/backends/opengl/sampler_backend.cpp @@ -25,6 +25,12 @@ OpenGLSampler::OpenGLSampler() glGenSamplers(1, &id); } +OpenGLSampler::OpenGLSampler(OpenGLSampler &&other): + id(other.id) +{ + other.id = 0; +} + OpenGLSampler::~OpenGLSampler() { if(id) @@ -40,26 +46,26 @@ bool OpenGLSampler::check_anisotropic(bool require) void OpenGLSampler::update(unsigned mask) const { - const Sampler *self = static_cast(this); + const Sampler &self = *static_cast(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)); } }