]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/instancearray.cpp
Some tweaks to vector component handling
[libs/gl.git] / source / render / instancearray.cpp
index 4a24ac456b6439935d28c063cf94fb4143b109aa..a03fbf20dff9ca2766c15067087389e0d2902fd3 100644 (file)
@@ -85,7 +85,7 @@ void InstanceArray::update_instance_matrix(unsigned index)
 {
        const Matrix &m = *instances[index]->get_matrix();
 
-       float *d = reinterpret_cast<float *>(instance_data.modify(instances.size()-1)+matrix_offset);
+       float *d = reinterpret_cast<float *>(instance_data.modify(index)+matrix_offset);
        for(unsigned i=0; i<12; ++i)
                d[i] = m(i/4, i%4);
 }
@@ -103,12 +103,11 @@ void InstanceArray::render(Renderer &renderer, Tag tag) const
                return;
 
        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();
+               instance_buffer->storage(instance_data.get_required_buffer_size(), STREAMING);
 
        Renderer::Push push(renderer);
+       renderer.set_pipeline_key(this, tag.id);
        method->apply(renderer);
        mesh->draw_instanced(renderer, vtx_setup, instances.size());
 }