X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fmesh.cpp;h=5f9c60d03919e2fe262d4bf848325eaee30dd6e5;hp=a463ba7fb7c7a1414ee42ed116264d672730f514;hb=b0059bd068c99dadfc922584911fcb25a21b737b;hpb=f50822b9e73a6ecdacbc4af4c4d9aba435a72386 diff --git a/source/mesh.cpp b/source/mesh.cpp index a463ba7f..5f9c60d0 100644 --- a/source/mesh.cpp +++ b/source/mesh.cpp @@ -175,6 +175,25 @@ void Mesh::draw(Renderer &renderer) const renderer.draw(*i); } +void Mesh::draw_instanced(Renderer &renderer, const VertexSetup &vs, unsigned count) const +{ + if(vs.get_vertex_array()!=&vertices) + throw invalid_argument("Mesh::draw_instanced"); + + if(manager) + { + manager->resource_used(*this); + if(disallow_rendering) + return; + } + + renderer.set_vertex_setup(&vs); + renderer.set_winding_test(winding); + + for(vector::const_iterator i=batches.begin(); i!=batches.end(); ++i) + renderer.draw_instanced(*i, count); +} + void Mesh::bind() const { /* If VAOs are not supported, vtx_setup is zero and set_current won't get