]> git.tdb.fi Git - libs/gl.git/blobdiff - source/mesh.cpp
Initial support for instanced rendering
[libs/gl.git] / source / mesh.cpp
index a463ba7fb7c7a1414ee42ed116264d672730f514..5f9c60d03919e2fe262d4bf848325eaee30dd6e5 100644 (file)
@@ -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<Batch>::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