From 92351f63c5061d2b0b96201390649662c2833388 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 17 Aug 2014 18:23:30 +0300 Subject: [PATCH] Add memory-mapping functions for Buffer --- source/buffer.cpp | 12 ++++++++++++ source/buffer.h | 10 ++++++++++ 2 files changed, 22 insertions(+) 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); } -- 2.45.2