1 #ifndef _GRAPHICSBUFFER_H
2 #define _GRAPHICSBUFFER_H
11 * Implementation of an OpenGL buffer, with some extra cleverness.
18 BufferTypeVertex, // A Vertex Buffer
19 BufferTypeIndex, // An Index Buffer
20 BufferTypePixelPack, // Pixel Pack buffer
21 BufferTypePixelUnpack,
22 BufferTypeUniform, // Uniform/Constant buffer
23 BufferTypeDrawIndirect,
28 BufferUsageStaticDraw,
29 BufferUsageStaticRead,
30 BufferUsageStaticCopy,
31 BufferUsageDynamicDraw,
32 BufferUsageDynamicRead,
33 BufferUsageDynamicCopy,
34 BufferUsageStreamDraw,
35 BufferUsageStreamRead,
42 void SetType(BufferType bufType);
43 void SetUsage(BufferUsage bufUsage);
45 void *Map(bool read, bool write, bool invalidate);
46 void *MapRange(int offset, int length, bool read, bool write, bool invalidate);
50 void Upload(size_t length, const void *data);
51 void UploadRange(size_t length, intptr_t offset, const void *data);
53 void Resize(size_t length);
54 const size_t GetSize() const { return m_buffer_size; }
60 void RecreateBuffer();
61 GLuint m_buffer_handle;
62 BufferType m_buffer_type;
63 BufferUsage m_buffer_usage;
67 bool m_buffer_shape_dirty;