- for(map<int, const Uniform *>::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
- i->second->apply(i->first);
+ if(buffer)
+ {
+ if(dirty)
+ {
+ update_buffer_data();
+ if(!buf_range)
+ buf_range = new BufferRange(*buffer, buffer_offset, size);
+ }
+ buf_range->bind_to(UNIFORM_BUFFER, index);
+ }
+ else
+ {
+ for(map<int, const Uniform *>::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
+ i->second->apply(i->first);
+ }