X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogramdata.cpp;h=4a6c262a37a646bfd128f3cda4143ae5007e2a70;hb=66181b3f47322ffc9b8aebf04a8c222abe1a75a2;hp=68a6715d419c847c173ba56ab5cc0dac6c329878;hpb=5f78db03b3285c977760a41da1e3927720e50352;p=libs%2Fgl.git diff --git a/source/programdata.cpp b/source/programdata.cpp index 68a6715d..4a6c262a 100644 --- a/source/programdata.cpp +++ b/source/programdata.cpp @@ -513,10 +513,7 @@ ProgramData::SharedBlock *ProgramData::get_shared_block(const Program::UniformBl if(info.bind_point>=0) { if(!buffer) - { buffer = new Buffer(UNIFORM_BUFFER); - buffer->set_usage(STREAM_DRAW); - } block = new UniformBlock(info.data_size); block->use_buffer(buffer, last_block); @@ -606,7 +603,16 @@ void ProgramData::apply() const { unsigned required_size = last_block->get_required_buffer_size(); if(last_block->get_required_buffer_size()>buffer->get_size()) - buffer->data(required_size, 0); + { + if(buffer->get_size()>0) + { + delete buffer; + buffer = new Buffer(UNIFORM_BUFFER); + last_block->change_buffer(buffer); + } + + buffer->storage(required_size); + } } }