]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/instancearray.cpp
Fix incorrect vertex array indexing in InstanceArray
[libs/gl.git] / source / render / instancearray.cpp
index eec72f98dc18144c777f8ae61bb5eb3d18677db0..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(), STREAMING);
-       instance_data.refresh();
 
        Renderer::Push push(renderer);
+       renderer.set_pipeline_key(this, tag.id);
        method->apply(renderer);
        mesh->draw_instanced(renderer, vtx_setup, instances.size());
 }