]> git.tdb.fi Git - libs/gl.git/commitdiff
Add memory-mapping functions for Buffer
authorMikko Rasa <tdb@tdb.fi>
Sun, 17 Aug 2014 15:23:30 +0000 (18:23 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 17 Aug 2014 15:23:30 +0000 (18:23 +0300)
source/buffer.cpp
source/buffer.h

index 9fa03c1242024184585618ff841b71d802fc1a46..9edcf07d6e52ab52e2b9b5f277a0f57b389fcec3 100644 (file)
@@ -61,6 +61,18 @@ BufferRange *Buffer::create_range(unsigned s, unsigned o)
        return new BufferRange(*this, s, o);
 }
 
+void *Buffer::map(BufferAccess access)
+{
+       BindRestore _bind(this, type);
+       return glMapBuffer(type, access);
+}
+
+bool Buffer::unmap()
+{
+       BindRestore _bind(this, type);
+       return glUnmapBuffer(type);
+}
+
 void Buffer::bind_to(BufferType t) const
 {
        if(t!=type)
index a7d4c2ba4314f8cbbc9db9fb6c2422cf0e85da2c..e43536e238da3f50b66fc875f499aeb4d0b90286 100644 (file)
@@ -31,6 +31,13 @@ enum BufferUsage
        DYNAMIC_COPY = GL_DYNAMIC_COPY
 };
 
+enum BufferAccess
+{
+       READ_ONLY = GL_READ_ONLY,
+       WRITE_ONLY = GL_WRITE_ONLY,
+       READ_WRITE = GL_READ_WRITE
+};
+
 class BufferRange;
 
 /**
@@ -80,6 +87,9 @@ public:
 
        BufferRange *create_range(unsigned, unsigned);
 
+       void *map(BufferAccess);
+       bool unmap();
+
        /** Binds the buffer in its default slot. */
        void bind() const { bind_to(type); }