- update_parameter(COMPARE);
-}
-
-void Sampler::bind_to(unsigned i) const
-{
- TexUnit &unit = TexUnit::get_unit(i);
- if(owner && owner!=unit.get_texture())
- throw invalid_operation("Sampler::bind_to");
-
- const Sampler *cur = unit.get_sampler();
- if(unit.set_sampler(this))
- {
- if(!owner || (cur && cur->id))
- glBindSampler(i, id);
-
- if(dirty_params)
- {
- update_parameter(dirty_params);
- dirty_params = 0;
- }
- }
-}
-
-const Sampler *Sampler::current(unsigned i)
-{
- return TexUnit::get_unit(i).get_sampler();
-}
-
-void Sampler::unbind_from(unsigned i)
-{
- TexUnit &unit = TexUnit::get_unit(i);
- const Sampler *cur = unit.get_sampler();
- if(unit.set_sampler(0) && cur->id)
- glBindSampler(i, 0);
-}
-
-void Sampler::unload()
-{
- if(owner && !owner->get_id())
- {
- if(min_filter!=NEAREST_MIPMAP_LINEAR)
- dirty_params |= MIN_FILTER;
- if(mag_filter!=LINEAR)
- dirty_params |= MAG_FILTER;
- if(max_anisotropy!=1.0f)
- dirty_params |= MAX_ANISOTROPY;
- if(wrap_s!=REPEAT)
- dirty_params |= WRAP_S;
- if(wrap_t!=REPEAT)
- dirty_params |= WRAP_T;
- if(wrap_r!=REPEAT)
- dirty_params |= WRAP_R;
- if(compare || cmp_func!=LEQUAL)
- dirty_params |= COMPARE;
- }