- const BufferBackedUniformBlock *block = static_cast<const BufferBackedUniformBlock *>(i->block);
- glBindBufferRange(GL_UNIFORM_BUFFER, i->binding, block->get_buffer()->get_id(), block->get_offset(), block->get_data_size());
- bound_uniform_blocks[i->binding] = 1;
+ glBindBufferRange(GL_UNIFORM_BUFFER, u.binding, u.block->get_buffer()->id, u.block->get_offset(), u.block->get_data_size());
+ bound_uniform_blocks[u.binding] = 1;
+ }
+ else if(shprog)
+ {
+ const char *data = static_cast<const char *>(u.block->get_data_pointer());
+ for(const Program::UniformCall &call: shprog->uniform_calls)
+ call.func(call.location, call.size, data+call.location*16);