X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frender%2Frenderer.cpp;h=2485a9e26dedfb866c1ff22c513e8f8e9670cf7b;hp=dc41eb11e746dc170b61d93897df58b98bd66c68;hb=32fe9849a37a1917ca5b450ea9dd192b268bc16f;hpb=acb4aba95c22fa7c72eeef10befd611570d35182 diff --git a/source/render/renderer.cpp b/source/render/renderer.cpp index dc41eb11..2485a9e2 100644 --- a/source/render/renderer.cpp +++ b/source/render/renderer.cpp @@ -391,9 +391,12 @@ void Renderer::apply_state() changed &= ~STANDARD_SHDATA; } + bool shdata_changed = changed&SHADER_DATA; + for(vector::const_iterator i=shdata_stack.begin(); (!shdata_changed && i!=shdata_stack.end()); ++i) + shdata_changed = (i->shdata->get_generation()!=i->generation); bool extra_shdata = (shdata_stack.size()>state->shdata_count); - if((changed&SHADER_DATA) || shprog_changed || extra_shdata) + if(shdata_changed || shprog_changed || extra_shdata) { if(extra_shdata) shdata_stack.erase(shdata_stack.begin()+state->shdata_count, shdata_stack.end());