]> git.tdb.fi Git - libs/gl.git/blobdiff - source/buffer.cpp
Add vertex array object support to Mesh
[libs/gl.git] / source / buffer.cpp
index a502190f82058c5b67aa4b53dada321bbec95cbf..d8bb28028ee686380e48b77613c039906df40a35 100644 (file)
@@ -3,6 +3,8 @@
 #include <msp/gl/extensions/arb_uniform_buffer_object.h>
 #include <msp/gl/extensions/arb_vertex_buffer_object.h>
 #include "buffer.h"
+#include "error.h"
+#include "mesh.h"
 #include "misc.h"
 
 using namespace std;
@@ -67,12 +69,17 @@ void Buffer::bind_to(BufferType t) const
 {
        if(t!=type)
                require_buffer_type(t);
+       // Don't change the binding in a mesh's vertex array object
+       if(t==ELEMENT_ARRAY_BUFFER && Mesh::current())
+               throw invalid_operation("Buffer::bind_to(ELEMENT_ARRAY_BUFFER)");
        if(set_current(t, this))
                glBindBuffer(t, id);
 }
 
 void Buffer::unbind_from(BufferType type)
 {
+       if(type==ELEMENT_ARRAY_BUFFER && Mesh::current())
+               throw invalid_operation("Buffer::unbind_from(ELEMENT_ARRAY_BUFFER)");
        if(set_current(type, 0))
                glBindBuffer(type, 0);
 }