X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuffer.h;h=39e88cd1ce7647b74ea5f7f6b75cba575ea0d403;hp=117f4ea6a1f5d0a699192ebdaffae808e400c68e;hb=HEAD;hpb=a4f59a729cb9d8183ad8fc050d7bc163abfd55e8 diff --git a/source/buffer.h b/source/buffer.h deleted file mode 100644 index 117f4ea6..00000000 --- a/source/buffer.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef MSP_GL_BUFFER_H_ -#define MSP_GL_BUFFER_H_ - -#include "gl.h" - -namespace Msp { -namespace GL { - -enum BufferType -{ - ARRAY_BUFFER = GL_ARRAY_BUFFER_ARB, - ELEMENT_ARRAY_BUFFER = GL_ELEMENT_ARRAY_BUFFER_ARB, - PIXEL_PACK_BUFFER = GL_PIXEL_PACK_BUFFER_ARB, - PIXEL_UNPACK_BUFFER = GL_PIXEL_UNPACK_BUFFER_ARB -}; - -enum BufferUsage -{ - STREAM_DRAW = GL_STREAM_DRAW_ARB, - STREAM_READ = GL_STREAM_READ_ARB, - STREAM_COPY = GL_STREAM_COPY_ARB, - STATIC_DRAW = GL_STATIC_DRAW_ARB, - STATIC_READ = GL_STATIC_READ_ARB, - STATIC_COPY = GL_STATIC_COPY_ARB, - DYNAMIC_DRAW = GL_DYNAMIC_DRAW_ARB, - DYNAMIC_READ = GL_DYNAMIC_READ_ARB, - DYNAMIC_COPY = GL_DYNAMIC_COPY_ARB -}; - -/** -A buffer for storing data in GL memory. Putting vertex and index data in -buffers can improve rendering performance. The VertexArray and Mesh classes -contain built-in support for buffers. -*/ -class Buffer -{ -private: - BufferType type; - BufferUsage usage; - unsigned id; - unsigned size; - - static const Buffer *bound[4]; - -public: - Buffer(BufferType); - ~Buffer(); - -private: - static void require_buffer_type(BufferType); - -public: - /** Sets the usage hint of the buffer. It will take effect the next time - the buffer's contents are defined. */ - void set_usage(BufferUsage); - - /** Uploads data into the buffer, completely replacing any previous - contents. */ - void data(unsigned, const void *); - - /** Overwrites part of the buffer data with new data. The buffer size can - not be changed with this call. */ - void sub_data(unsigned, unsigned, const void *); - - unsigned get_size() const { return size; } - - /** Binds the buffer in its default slot. */ - void bind() const { bind_to(type); } - - /** Binds the buffer in an alternate slot. */ - void bind_to(BufferType) const; - - /** Unbinds the buffer from its default slot. */ - void unbind() const { unbind_from(type); } - - static const Buffer *current(BufferType t) { return binding(t); } - static void unbind_from(BufferType); -private: - static const Buffer *&binding(BufferType); - static bool set_current(BufferType, const Buffer *); - static void restore(const Buffer *, BufferType); -}; - -/** -An adaptor for Buffer to make it compatible with Bind. -*/ -template -class BufferAlias -{ -private: - const Buffer &buffer; - -public: - BufferAlias(const Buffer &b): buffer(b) { } - - void bind() const { buffer.bind_to(T); } - static const Buffer *current() { return Buffer::current(T); } - static void unbind() { Buffer::unbind_from(T); } -}; - -} // namespace GL -} // namespace Msp - -#endif