X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fmesh.cpp;h=f8135dc8c2ce5dcb7baee86238128aa3b78c8a34;hb=fcde8390ad577fe434dcd4b29e0f410d29f867c9;hp=3a79f3e53193c0c1c63cb32bde351926c2cb4a63;hpb=ea7832c7c1ffab00cc1168bc8c41375fdd0eae86;p=libs%2Fgl.git diff --git a/source/core/mesh.cpp b/source/core/mesh.cpp index 3a79f3e5..f8135dc8 100644 --- a/source/core/mesh.cpp +++ b/source/core/mesh.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "buffer.h" #include "error.h" #include "mesh.h" @@ -63,6 +64,11 @@ void Mesh::check_buffers(unsigned mask) vertices.use_buffer(vbuf); vtx_setup.set_vertex_array(vertices); dirty |= VERTEX_BUFFER; + +#ifdef DEBUG + if(!debug_name.empty()) + vbuf->set_debug_name(debug_name+" [VBO]"); +#endif } } @@ -77,6 +83,11 @@ void Mesh::check_buffers(unsigned mask) batches.front().change_buffer(ibuf); vtx_setup.set_index_buffer(*ibuf); dirty |= INDEX_BUFFER; + +#ifdef DEBUG + if(!debug_name.empty()) + vbuf->set_debug_name(debug_name+" [IBO]"); +#endif } } } @@ -155,6 +166,9 @@ void Mesh::draw(Renderer &renderer, const VertexSetup *vs, unsigned count) const return; } + if(batches.empty()) + return; + if(dirty) resize_buffers(); @@ -177,7 +191,7 @@ void Mesh::resize_buffers() const { if(dirty&VERTEX_BUFFER) vbuf->storage(vertices.get_required_buffer_size()); - if(dirty&INDEX_BUFFER) + if((dirty&INDEX_BUFFER) && !batches.empty()) ibuf->storage(batches.front().get_required_buffer_size()); dirty = 0; } @@ -208,6 +222,20 @@ void Mesh::unload() ibuf = 0; } +void Mesh::set_debug_name(const string &name) +{ +#ifdef DEBUG + debug_name = name; + if(vbuf) + vbuf->set_debug_name(name+" [VBO]"); + if(ibuf) + ibuf->set_debug_name(name+" [IBO]"); + vtx_setup.set_debug_name(name+" [VAO]"); +#else + (void)name; +#endif +} + Mesh::Loader::Loader(Mesh &m, bool g): DataFile::ObjectLoader(m),