- for(vector<BoundTexture>::const_iterator i=textures.begin(); i!=textures.end(); ++i)
- if(i->changed)
- {
- if(i->texture && i->sampler)
- {
- if(ARB_direct_state_access)
- glBindTextureUnit(i->binding, i->texture->get_id());
- else
- {
- glActiveTexture(GL_TEXTURE0+i->binding);
- if(bound_tex_targets[i->binding] && static_cast<int>(i->texture->get_target())!=bound_tex_targets[i->binding])
- glBindTexture(bound_tex_targets[i->binding], 0);
- glBindTexture(i->texture->get_target(), i->texture->get_id());
- bound_tex_targets[i->binding] = i->texture->get_target();
- }
-
- glBindSampler(i->binding, i->sampler->get_id());
- i->sampler->refresh();
- }
- else if(bound_tex_targets[i->binding])
- {
- if(ARB_direct_state_access)
- glBindTextureUnit(i->binding, 0);
- else
- {
- glActiveTexture(GL_TEXTURE0+i->binding);
- glBindTexture(bound_tex_targets[i->binding], 0);
- bound_tex_targets[i->binding] = 0;
- }
- }
-
- i->changed = false;
- }
- }
-
- if(mask&UNIFORMS)
- {
- if(last_applied && this!=last_applied)