if(tied_program)
{
for(vector<NamedUniform>::const_iterator i=other.uniforms.begin(); i!=other.uniforms.end(); ++i)
- tied_program->get_uniform_info(i->name);
+ validate_name(i->name);
}
uniforms = other.uniforms;
dirty = 0;
}
- const Program::UniformBlockMap &prog_blocks = prog->get_uniform_blocks();
+ const vector<Program::UniformBlockInfo> &prog_blocks = prog->get_uniform_blocks();
UniformBlock *old_last_block = last_block;
if(pu.dirty==ALL_ONES)
pu.blocks.reserve(prog_blocks.size());
pu.used = 0;
- for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
+ for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
{
- SharedBlock *shared = get_shared_block(i->second);
+ SharedBlock *shared = get_shared_block(*i);
if(shared)
{
if(shared->dirty==ALL_ONES)
- update_block_uniform_indices(*shared, i->second);
+ update_block_uniform_indices(*shared, *i);
pu.used |= shared->used;
}
- pu.blocks.push_back(ProgramBlock(i->second.bind_point, shared));
+ pu.blocks.push_back(ProgramBlock(i->bind_point, shared));
}
}
// Update the contents of all dirty blocks.
bool buffered_blocks_updated = false;
std::vector<ProgramBlock>::iterator j = pu.blocks.begin();
- for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
+ for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
{
if(!j->shared || !j->shared->dirty)
continue;
- update_block(*j->shared, i->second);
+ update_block(*j->shared, *i);
j->shared->dirty = 0;
buffered_blocks_updated |= (j->bind_point>=0);
}