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)
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));
}
}