]> git.tdb.fi Git - libs/gl.git/blobdiff - source/buffer.cpp
Require import module names to be identifiers
[libs/gl.git] / source / buffer.cpp
index 040ae8df1eca040f55798222257121faf2efef49..4b485ddad6cb266d1d96d2e844c40583cb9ace3a 100644 (file)
@@ -3,8 +3,8 @@
 #include <msp/gl/extensions/arb_map_buffer_range.h>
 #include "buffer.h"
 #include "error.h"
-#include "mesh.h"
 #include "misc.h"
+#include "vertexsetup.h"
 
 using namespace std;
 
@@ -110,13 +110,16 @@ void *Buffer::map(BufferAccess access)
 
 bool Buffer::unmap()
 {
+       // TODO check if it's mapped
        if(ARB_direct_state_access)
                return glUnmapNamedBuffer(id);
-       else
+       else if(OES_mapbuffer)
        {
                BindRestore _bind(this, type);
                return glUnmapBuffer(type);
        }
+       else
+               return true;
 }
 
 void Buffer::bind_to(BufferType t) const
@@ -124,10 +127,10 @@ void Buffer::bind_to(BufferType t) const
        if(t!=type)
                require_buffer_type(t);
        if(t==ELEMENT_ARRAY_BUFFER)
-               if(const Mesh *m = Mesh::current())
+               if(const VertexSetup *vs = VertexSetup::current())
                {
-                       // Don't change the binding in a mesh's vertex array object
-                       if(this==m->get_index_buffer())
+                       // Don't change the binding in a vertex array object
+                       if(this==vs->get_index_buffer())
                                return;
                        throw invalid_operation("Buffer::bind_to(ELEMENT_ARRAY_BUFFER)");
                }
@@ -138,14 +141,14 @@ void Buffer::bind_to(BufferType t) const
 const Buffer *Buffer::current(BufferType t)
 {
        if(t==ELEMENT_ARRAY_BUFFER)
-               if(const Mesh *m = Mesh::current())
-                       return m->get_index_buffer();
+               if(const VertexSetup *vs = VertexSetup::current())
+                       return vs->get_index_buffer();
        return binding(t);
 }
 
 void Buffer::unbind_from(BufferType type)
 {
-       if(type==ELEMENT_ARRAY_BUFFER && Mesh::current())
+       if(type==ELEMENT_ARRAY_BUFFER && VertexSetup::current())
                throw invalid_operation("Buffer::unbind_from(ELEMENT_ARRAY_BUFFER)");
        if(set_current(type, 0))
                glBindBuffer(type, 0);