19#include "OpenGLRenderer.hpp"
20#include "OpenGLBuffer.hpp"
21#include "OpenGLFunctions.hpp"
25 OpenGLBuffer::OpenGLBuffer ( ) =
default;
26 OpenGLBuffer::OpenGLBuffer (
const GLsizei aSize,
const GLenum aUsage,
const void *aData ) :
27 mSize{aSize}, mUsage {aUsage}
40 OpenGLBuffer::~OpenGLBuffer()
45 OpenGLBuffer::OpenGLBuffer ( OpenGLBuffer&& aBuffer )
47 std::swap ( mBuffer, aBuffer.mBuffer );
48 std::swap ( mSize, aBuffer.mSize );
49 std::swap ( mUsage, aBuffer.mUsage );
66 if ( ( glIsBuffer ( mBuffer ) ) && ( aData ) )
68 glNamedBufferSubData ( mBuffer,
72 OPENGL_CHECK_ERROR_THROW;
78 void* data = glMapNamedBuffer ( mBuffer, aAccess );
79 OPENGL_CHECK_ERROR_THROW;
85 return MapRange ( aOffset, aSize, GL_MAP_READ_BIT | GL_MAP_WRITE_BIT );
89 void* data = glMapNamedBufferRange ( mBuffer, aOffset, aSize, aAccess );
90 OPENGL_CHECK_ERROR_THROW;
96 glUnmapNamedBuffer ( mBuffer );
97 OPENGL_CHECK_ERROR_THROW;
111 glCreateBuffers ( 1, &mBuffer );
112 glNamedBufferData ( mBuffer,
120 if ( mBuffer != 0 && glIsBuffer ( mBuffer ) )
122 glDeleteBuffers ( 1, &mBuffer );
void * MapRange(const GLintptr aOffset, const GLsizeiptr aSize, const GLbitfield aAccess) const
Map a sub-range of the buffer.
void Unmap() const final
Unmap a previously mapped buffer region.
void WriteMemory(const size_t aOffset, const size_t aSize, const void *aData=nullptr) const final
Write data into the buffer at a given offset.
GLuint GetBufferId() const
Get the OpenGL buffer object identifier.
size_t GetSize() const final
Get the total size of the buffer in bytes.
void Initialize(const GLsizei aSize, const GLenum aUsage, const void *aData=nullptr)
Initialize the buffer with the given size, usage, and optional data.
void * Map(const size_t aOffset, size_t aSize) const final
Map a region of the buffer into CPU-accessible memory.
void Finalize()
Release the buffer resources.
<- This is here just for the literals