X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Finstancearray.cpp;h=a838b948cf57600bf9c7a58d41439847a69126d0;hb=7515dea78777a7184f207d353d23f9ad9917675e;hp=f6a7bb634bd450c0f6f4d4011655331ca72e93ea;hpb=c0b7d6ee4a7478f5aecb1504429ec1fc846d64ed;p=libs%2Fgl.git diff --git a/source/render/instancearray.cpp b/source/render/instancearray.cpp index f6a7bb63..a838b948 100644 --- a/source/render/instancearray.cpp +++ b/source/render/instancearray.cpp @@ -15,10 +15,7 @@ namespace Msp { namespace GL { InstanceArray::InstanceArray(const Object &o): - object(o), - instance_buffer(0), - matrix_location(-1), - matrix_offset(0) + object(o) { const Technique *tech = object.get_technique(); for(const auto &kvp: tech->get_methods()) @@ -106,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()); }