X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fprogramdata.cpp;fp=source%2Fprogramdata.cpp;h=68a6715d419c847c173ba56ab5cc0dac6c329878;hp=912bc3c88a54c25a8c52199e8552a0d0a2b5eecc;hb=5f78db03b3285c977760a41da1e3927720e50352;hpb=76ca3c65dbb96461e42300016a85a4e158f5596b diff --git a/source/programdata.cpp b/source/programdata.cpp index 912bc3c8..68a6715d 100644 --- a/source/programdata.cpp +++ b/source/programdata.cpp @@ -559,6 +559,7 @@ void ProgramData::apply() const const Program::UniformBlockMap &prog_blocks = prog->get_uniform_blocks(); + UniformBlock *old_last_block = last_block; if(pu.dirty==ALL_ONES) { /* The set of uniforms has changed since this program was last used. @@ -600,6 +601,13 @@ void ProgramData::apply() const to avoid state thrashing. */ if(buffered_blocks_updated && !ARB_direct_state_access) buffer->bind(); + + if(last_block!=old_last_block) + { + unsigned required_size = last_block->get_required_buffer_size(); + if(last_block->get_required_buffer_size()>buffer->get_size()) + buffer->data(required_size, 0); + } } for(vector::iterator i=pu.blocks.begin(); i!=pu.blocks.end(); ++i)