X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuffer.h;h=39e88cd1ce7647b74ea5f7f6b75cba575ea0d403;hp=bfbfd14891ff024a7d509198710deffa439e73f7;hb=00cc52f21b5ae29fb1b25c162552c851a0559e66;hpb=1d24ddbc35f9e0480d30c66d47b7ea3834c15fbf diff --git a/source/buffer.h b/source/buffer.h index bfbfd148..39e88cd1 100644 --- a/source/buffer.h +++ b/source/buffer.h @@ -3,8 +3,10 @@ #include #include "gl.h" +#include #include #include +#include namespace Msp { namespace GL { @@ -31,6 +33,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 +89,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); } @@ -89,7 +101,7 @@ public: /** Unbinds the buffer from its default slot. */ void unbind() const { unbind_from(type); } - static const Buffer *current(BufferType t) { return binding(t); } + static const Buffer *current(BufferType); static void unbind_from(BufferType); private: static const Buffer *&binding(BufferType); @@ -111,6 +123,7 @@ private: public: BufferRange(Buffer &, unsigned, unsigned); + ~BufferRange(); void data(const void *);