buf_range(0)
{ }
+UniformBlock::~UniformBlock()
+{
+ delete buf_range;
+}
+
+void UniformBlock::offset_changed()
+{
+ delete buf_range;
+ buf_range = 0;
+}
+
+void UniformBlock::upload_data() const
+{
+ if(!buf_range)
+ buf_range = new BufferRange(*buffer, buffer_offset, size);
+ buf_range->data(&data[0]);
+}
+
void UniformBlock::attach(int index, const Uniform &uni)
{
uniforms[index] = &uni;
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