From: Mikko Rasa Date: Sat, 6 Feb 2021 22:14:14 +0000 (+0200) Subject: Only mark changed fields dirty when unloading a sampler X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=commitdiff_plain;h=d99f756830d39437d88e6cc7af034c3074b0bd86 Only mark changed fields dirty when unloading a sampler --- diff --git a/source/sampler.cpp b/source/sampler.cpp index cc54901b..5375d17d 100644 --- a/source/sampler.cpp +++ b/source/sampler.cpp @@ -217,9 +217,23 @@ void Sampler::unbind_from(unsigned i) void Sampler::unload() { - // TODO check which params actually need refreshing - if(!owner->get_id()) - dirty_params = -1; + 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; + } }