X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fmesh.cpp;h=467f35448382e4d02744cbc3a6ccf36fef657984;hb=8092f757684a97e338794525b52a1154bd996e0e;hp=4679e3a3f43271fe91d9119e615ac30136d3b9a2;hpb=38712d8ecc57d043a2419ffbaeeb57f7a6586f14;p=libs%2Fgl.git diff --git a/source/core/mesh.cpp b/source/core/mesh.cpp index 4679e3a3..467f3544 100644 --- a/source/core/mesh.cpp +++ b/source/core/mesh.cpp @@ -9,8 +9,7 @@ using namespace std; namespace Msp { namespace GL { -Mesh::Mesh(const VertexFormat &f): - Mesh() +Mesh::Mesh(const VertexFormat &f) { storage(f); } @@ -30,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() @@ -48,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 @@ -80,12 +82,12 @@ void Mesh::check_buffers(unsigned mask) } } -unsigned Mesh::get_n_vertices() const +size_t Mesh::get_n_vertices() const { return vertices.size(); } -char *Mesh::modify_vertex(unsigned i) +char *Mesh::modify_vertex(size_t i) { if(vertices.get_format().empty()) throw invalid_operation("Mesh::modify_vertex"); @@ -286,10 +288,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);