From: Mikko Rasa Date: Sun, 17 Aug 2014 15:23:30 +0000 (+0300) Subject: Add memory-mapping functions for Buffer X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=92351f63c5061d2b0b96201390649662c2833388;p=libs%2Fgl.git Add memory-mapping functions for Buffer --- diff --git a/source/buffer.cpp b/source/buffer.cpp index 9fa03c12..9edcf07d 100644 --- a/source/buffer.cpp +++ b/source/buffer.cpp @@ -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) diff --git a/source/buffer.h b/source/buffer.h index a7d4c2ba..e43536e2 100644 --- a/source/buffer.h +++ b/source/buffer.h @@ -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); }