X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fmesh.cpp;h=b5628eb10c860bbc758b17e08b7db045bea7b65c;hp=e2dd853c448dff6c25259bcb42aa46d6a1433c70;hb=8e58fc4da8443cb67fe4cd70d6f68de2be73011d;hpb=f853ca0a365ae8b43ba8b2f4d6f21cd1c2bd4bd5 diff --git a/source/core/mesh.cpp b/source/core/mesh.cpp index e2dd853c..b5628eb1 100644 --- a/source/core/mesh.cpp +++ b/source/core/mesh.cpp @@ -29,6 +29,8 @@ void Mesh::storage(const VertexFormat &fmt) vertices.set_format(fmt); vtx_setup.set_format(fmt); + if(vbuf) + vtx_setup.set_vertex_array(vertices); } void Mesh::clear() @@ -47,7 +49,8 @@ void Mesh::check_buffers(unsigned mask) delete vbuf; vbuf = new Buffer; vertices.use_buffer(vbuf); - vtx_setup.set_vertex_array(vertices); + if(!vertices.get_format().empty()) + vtx_setup.set_vertex_array(vertices); dirty |= VERTEX_BUFFER; #ifdef DEBUG @@ -240,9 +243,8 @@ void Mesh::set_debug_name(const string &name) } -Mesh::Loader::Loader(Mesh &m, bool g): - DataFile::ObjectLoader(m), - allow_gl_calls(g) +Mesh::Loader::Loader(Mesh &m): + DataFile::ObjectLoader(m) { add("batch", &Loader::batch); add("storage", &Loader::storage); @@ -285,10 +287,7 @@ void Mesh::Loader::batch(PrimitiveType p) Mesh::AsyncLoader::AsyncLoader(Mesh &m, IO::Seekable &i): mesh(m), - io(i), - vertex_updater(0), - index_updater(0), - phase(0) + io(i) { mesh.disallow_rendering = true; mesh.check_buffers(VERTEX_BUFFER|INDEX_BUFFER); @@ -312,7 +311,8 @@ bool Mesh::AsyncLoader::process() { // TODO use correct filename DataFile::Parser parser(io, "async"); - Loader loader(mesh, false); + Loader loader(mesh); + loader.allow_gl_calls = false; loader.load(parser); } else if(phase==1)