if(extra_shdata)
shdata_stack.erase(shdata_stack.begin()+state->shdata_count, shdata_stack.end());
for(vector<BoundProgramData>::const_iterator i=shdata_stack.begin(); i!=shdata_stack.end(); ++i)
+ {
i->shdata->apply();
+ i->generation = i->shdata->get_generation();
+ }
changed &= ~SHADER_DATA;
}