X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Finstancearray.cpp;h=a03fbf20dff9ca2766c15067087389e0d2902fd3;hb=b84ce32a8dfcacd54c3497c6e7facb5d65e82827;hp=4a24ac456b6439935d28c063cf94fb4143b109aa;hpb=8544116298d7a1be176f52be48c9952529f5c446;p=libs%2Fgl.git diff --git a/source/render/instancearray.cpp b/source/render/instancearray.cpp index 4a24ac45..a03fbf20 100644 --- a/source/render/instancearray.cpp +++ b/source/render/instancearray.cpp @@ -85,7 +85,7 @@ void InstanceArray::update_instance_matrix(unsigned index) { const Matrix &m = *instances[index]->get_matrix(); - float *d = reinterpret_cast(instance_data.modify(instances.size()-1)+matrix_offset); + float *d = reinterpret_cast(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()); }