]> git.tdb.fi Git - libs/gl.git/blobdiff - source/instancearray.cpp
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / instancearray.cpp
index 8fead4e907fb1e7dff900306ae8dca5367a1f280..abd9fcd0bd870d14def0192392490b09c702fa2d 100644 (file)
@@ -78,9 +78,12 @@ void InstanceArray::append(ObjectInstance *inst)
                {
                        instance_data->append();
                        unsigned req_size = instance_data->get_required_buffer_size();
-                       // XXX Inefficient, but will be rewritten imminently
-                       if(instance_buffer->get_size()<req_size)
-                               instance_buffer->data(req_size, 0);
+                       if(instance_buffer->get_size()>0 && instance_buffer->get_size()<req_size)
+                       {
+                               delete instance_buffer;
+                               instance_buffer = new Buffer(ARRAY_BUFFER);
+                               instance_data->use_buffer(instance_buffer);
+                       }
                }
                update_instance_matrix(instances.size()-1);
        }
@@ -125,6 +128,8 @@ void InstanceArray::render(Renderer &renderer, const Tag &tag) const
 
                const Mesh *mesh = object.get_mesh();
                mesh->get_vertices().refresh();
+               if(instance_buffer->get_size()==0)
+                       instance_buffer->storage(instance_data->get_required_buffer_size());
                instance_data->refresh();
 
                Renderer::Push push(renderer);