if(block.used && !block.block)
{
+ block.block = new UniformBlock(info);
if(info.bind_point>=0)
{
if(!buffer)
#endif
}
- BufferBackedUniformBlock *bb_block = new BufferBackedUniformBlock(info.data_size);
- block.block = bb_block;
- bb_block->use_buffer(buffer, last_buffer_block);
- last_buffer_block = bb_block;
+ block.block->use_buffer(buffer, last_buffer_block);
+ last_buffer_block = block.block;
}
- else
- block.block = new DefaultUniformBlock;
}
}
if(is_image(info.uniforms[i]->type))
; // Temporarily ignore deprecated use of sampler uniforms in ProgramData
else if(indices[i]!=0xFF)
- block.block->attach(*info.uniforms[i], *uniforms[indices[i]].value);
+ block.block->store(*info.uniforms[i], *uniforms[indices[i]].value);
}
}
vector<ProgramData::ProgramBlock>::const_iterator ProgramData::prepare_program(const Program &prog) const
{
- BufferBackedUniformBlock *old_last_block = last_buffer_block;
+ UniformBlock *old_last_block = last_buffer_block;
auto prog_begin = get_program(prog);
Mask force_dirty = (dirty==ALL_ONES ? ALL_ONES : 0U);
for(auto i=prog_begin+1; (i!=programs.end() && i->prog_hash==prog_hash); ++i)
if(i->block)
{
- if(i->bind_point<0)
- state.set_uniforms(static_cast<const DefaultUniformBlock *>(i->block));
- else
- {
- const BufferBackedUniformBlock *block = static_cast<const BufferBackedUniformBlock *>(i->block);
- block->refresh();
- state.set_uniform_block(i->bind_point, block);
- }
+ state.set_uniform_block(i->bind_point, i->block);
+ if(i->bind_point>=0)
+ i->block->refresh();
}
}