16#ifndef AEONGAMES_OPENGLBUFFER_HPP
17#define AEONGAMES_OPENGLBUFFER_HPP
19#include "aeongames/Buffer.hpp"
20#include "OpenGLFunctions.hpp"
31 OpenGLBuffer (
const GLsizei aSize,
const GLenum aUsage,
const void *aData =
nullptr );
33 OpenGLBuffer ( OpenGLBuffer&& aOpenGLBuffer );
34 OpenGLBuffer (
const OpenGLBuffer& aOpenGLBuffer ) =
delete;
35 OpenGLBuffer& operator= (
const OpenGLBuffer& aOpenGLBuffer ) =
delete;
36 OpenGLBuffer& operator= ( OpenGLBuffer&& aOpenGLBuffer ) =
delete;
40 void Initialize (
const GLsizei aSize,
const GLenum aUsage,
const void *aData =
nullptr );
45 void WriteMemory (
const size_t aOffset,
const size_t aSize,
const void *aData =
nullptr )
const final;
46 void*
Map (
const size_t aOffset,
size_t aSize )
const final;
47 void Unmap()
const final;
51 void*
Map (
const GLbitfield aAccess )
const;
53 void*
MapRange (
const GLintptr aOffset,
const GLsizeiptr aSize,
const GLbitfield aAccess )
const;
Abstract interface for GPU/memory buffer operations.
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.
OpenGL rendering backend implementing the Renderer interface.
<- This is here just for the literals