]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/mesh.cpp
Set OpenGL debug labels on various objects loaded from Resources
[libs/gl.git] / source / core / mesh.cpp
index d3fd7360f756680ef198c44916b9fe71ed7042ac..f8135dc8c2ce5dcb7baee86238128aa3b78c8a34 100644 (file)
@@ -1,6 +1,7 @@
 #include <msp/gl/extensions/arb_vertex_array_object.h>
 #include <msp/gl/extensions/arb_vertex_buffer_object.h>
 #include <msp/gl/extensions/arb_vertex_shader.h>
+#include <msp/gl/extensions/khr_debug.h>
 #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
                }
        }
 }
@@ -211,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<Mesh>(m),