winding = w;
}
-void Mesh::draw() const
-{
- const Mesh *cur = current();
- if(cur && cur!=this)
- throw invalid_operation("Mesh::draw");
-
- if(manager)
- {
- manager->resource_used(*this);
- if(disallow_rendering)
- return;
- }
-
- BindRestore bind_vtxs(vtx_setup);
- BindRestore bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER);
- Bind bind_winding(winding);
-
- for(vector<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
- i->draw();
-}
-
void Mesh::draw(Renderer &renderer) const
{
if(manager)
return;
}
- renderer.set_mesh(this);
+ renderer.set_vertex_setup(&vtx_setup);
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(set_current(this))
- {
- vtx_setup.bind();
- vertices.refresh();
- }
-}
-
-void Mesh::unbind()
-{
- if(set_current(0))
- VertexSetup::unbind();
-}
-
Resource::AsyncLoader *Mesh::load(IO::Seekable &io, const Resources *)
{
return new AsyncLoader(*this, io);