X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmesh.cpp;h=44568697f4f6dfd46aca884b9a6ebb8cffc05db3;hb=e5d7b40938e4ae38c41ae6ed054319f7f3fa600f;hp=055345faed1f17586de0c9c93d204f4c7956e985;hpb=f1c404eda3ae4173ceb63a4f9d1f0bbccf7091a6;p=libs%2Fgl.git diff --git a/source/mesh.cpp b/source/mesh.cpp index 055345fa..44568697 100644 --- a/source/mesh.cpp +++ b/source/mesh.cpp @@ -31,6 +31,7 @@ void Mesh::init(ResourceManager *rm) vao_id = 0; defer_buffers = true; dirty = true; + disallow_rendering = false; winding = 0; if(rm) @@ -152,7 +153,7 @@ void Mesh::draw() const if(!current()) vertices.apply(); - Bind bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER); + BindRestore bind_ibuf(ibuf, ELEMENT_ARRAY_BUFFER); Bind bind_winding(winding); for(list::const_iterator i=batches.begin(); i!=batches.end(); ++i) @@ -169,7 +170,6 @@ void Mesh::draw(Renderer &renderer) const } renderer.set_mesh(this); - renderer.set_element_buffer(ibuf); renderer.set_winding_test(winding); for(list::const_iterator i=batches.begin(); i!=batches.end(); ++i) @@ -183,7 +183,7 @@ void Mesh::bind() const if(!vao_id) { unbind(); - vertices.apply(); + vertices.apply(false); } else if(set_current(this)) { @@ -283,6 +283,8 @@ Mesh::AsyncLoader::AsyncLoader(Mesh &m, IO::Seekable &i): Mesh::AsyncLoader::~AsyncLoader() { mesh.disallow_rendering = false; + delete vertex_updater; + delete index_updater; } bool Mesh::AsyncLoader::needs_sync() const @@ -315,7 +317,9 @@ bool Mesh::AsyncLoader::process() else if(phase==3) { delete vertex_updater; + vertex_updater = 0; delete index_updater; + index_updater = 0; } ++phase;