-void Renderer::set_shader_program(const Program *p, const ProgramData *d)
-{
- state->shprog = p;
- if(p && d)
- add_shader_data(*d);
-}
-
-void Renderer::add_shader_data(const ProgramData &d)
-{
- if(state->shdata_count<shdata_stack.size())
- {
- const BoundProgramData &top = shdata_stack.back();
- if(top.shdata==&d && top.generation==d.get_generation())
- {
- ++state->shdata_count;
- return;
- }
- }
-
- flush_shader_data();
- shdata_stack.push_back(&d);
- state->shdata_count = shdata_stack.size();
- changed |= SHADER_DATA;
-}
-
-void Renderer::flush_shader_data()
-{
- if(shdata_stack.size()>state->shdata_count)
- shdata_stack.erase(shdata_stack.begin()+state->shdata_count, shdata_stack.end());
-}
-