]> git.tdb.fi Git - libs/gl.git/blobdiff - source/programdata.cpp
Make buffer storage immutable and use ARB_buffer_storage
[libs/gl.git] / source / programdata.cpp
index 68a6715d419c847c173ba56ab5cc0dac6c329878..4a6c262a37a646bfd128f3cda4143ae5007e2a70 100644 (file)
@@ -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);
+                       }
                }
        }