X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmesh.cpp;h=dba8a9915489aede7906f8a684b9d59e288428b5;hb=85d077813b5337e78d91e637177abebf37dd0425;hp=72936e66fb535a2e0020a896040221df2c60b777;hpb=66181b3f47322ffc9b8aebf04a8c222abe1a75a2;p=libs%2Fgl.git diff --git a/source/mesh.cpp b/source/mesh.cpp index 72936e66..dba8a991 100644 --- a/source/mesh.cpp +++ b/source/mesh.cpp @@ -40,6 +40,7 @@ void Mesh::init(ResourceManager *rm) Mesh::~Mesh() { set_manager(0); + batches.clear(); delete vbuf; delete ibuf; } @@ -208,8 +209,9 @@ void Mesh::unload() } -Mesh::Loader::Loader(Mesh &m): - DataFile::ObjectLoader(m) +Mesh::Loader::Loader(Mesh &m, bool g): + DataFile::ObjectLoader(m), + allow_gl_calls(g) { add("batch", &Loader::batch); add("vertices", &Loader::vertices); @@ -226,7 +228,11 @@ void Mesh::Loader::vertices(const vector &c) fmt = (fmt, *i); obj.vertices.reset(fmt); load_sub(obj.vertices); - obj.check_buffers(VERTEX_BUFFER); + if(allow_gl_calls) + { + obj.check_buffers(VERTEX_BUFFER); + obj.vtx_setup.refresh(); + } } void Mesh::Loader::batch(PrimitiveType p) @@ -274,12 +280,13 @@ bool Mesh::AsyncLoader::process() { // TODO use correct filename DataFile::Parser parser(io, "async"); - Loader loader(mesh); + Loader loader(mesh, false); loader.load(parser); } else if(phase==1) { mesh.resize_buffers(); + mesh.vtx_setup.refresh(); vertex_updater = mesh.vertices.refresh_async(); if(!mesh.batches.empty()) index_updater = mesh.batches.front().refresh_async();