SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
OpenGLBuffer.hpp
Go to the documentation of this file.
1
#ifndef OPENGLBUFFER_HPP_
2
#define OPENGLBUFFER_HPP_
3
4
#include "
../Common/BufferBase.hpp
"
5
#include <glad/glad.h>
6
7
namespace
Sleak
{
8
namespace
RenderEngine
{
9
10
/// OpenGL VBO/EBO/UBO wrapper; target is derived from BufferType at construction.
11
class
ENGINE_API
OpenGLBuffer
:
public
BufferBase
{
12
public
:
13
OpenGLBuffer
(uint32_t size,
BufferType
type);
14
~OpenGLBuffer
()
override
;
15
16
/// Creates the GL buffer object and uploads the initial payload, if any.
17
bool
Initialize
(
void
* data)
override
;
18
/// Re-uploads the last-mapped/updated data via glBufferSubData.
19
void
Update
()
override
;
20
/// Uploads new data, resizing the backing store if it grew.
21
void
Update
(
void
* data,
size_t
size)
override
;
22
void
Cleanup
()
override
;
23
24
/// Maps the buffer for direct CPU writes via glMapBuffer.
25
bool
Map
()
override
;
26
void
Unmap
()
override
;
27
28
void
*
GetData
()
override
;
29
30
GLuint
GetGLBuffer
()
const
{
return
m_buffer; }
31
GLenum
GetTarget
()
const
{
return
m_target; }
32
33
private
:
34
GLuint m_buffer = 0;
35
GLenum m_target = 0;
36
void
* m_mappedData =
nullptr
;
37
};
38
39
}
// namespace RenderEngine
40
}
// namespace Sleak
41
42
#endif
// OPENGLBUFFER_HPP_
BufferBase.hpp
Sleak::RenderEngine::BufferBase
Backend-agnostic GPU buffer: vertex, index, constant, or resource view target.
Definition
BufferBase.hpp:16
Sleak::RenderEngine::OpenGLBuffer::Update
void Update() override
Re-uploads the last-mapped/updated data via glBufferSubData.
Definition
OpenGLBuffer.cpp:47
Sleak::RenderEngine::OpenGLBuffer::Map
bool Map() override
Maps the buffer for direct CPU writes via glMapBuffer.
Definition
OpenGLBuffer.cpp:75
Sleak::RenderEngine::OpenGLBuffer::GetData
void * GetData() override
Definition
OpenGLBuffer.cpp:98
Sleak::RenderEngine::OpenGLBuffer::OpenGLBuffer
OpenGLBuffer(uint32_t size, BufferType type)
Definition
OpenGLBuffer.cpp:8
Sleak::RenderEngine::OpenGLBuffer::Unmap
void Unmap() override
Definition
OpenGLBuffer.cpp:88
Sleak::RenderEngine::OpenGLBuffer::Initialize
bool Initialize(void *data) override
Creates the GL buffer object and uploads the initial payload, if any.
Definition
OpenGLBuffer.cpp:32
Sleak::RenderEngine::OpenGLBuffer::GetGLBuffer
GLuint GetGLBuffer() const
Definition
OpenGLBuffer.hpp:30
Sleak::RenderEngine::OpenGLBuffer::Cleanup
void Cleanup() override
Definition
OpenGLBuffer.cpp:67
Sleak::RenderEngine::OpenGLBuffer::GetTarget
GLenum GetTarget() const
Definition
OpenGLBuffer.hpp:31
Sleak::RenderEngine
Backend-facing rendering layer shared by the four graphics backends.
Definition
Application.hpp:60
Sleak::RenderEngine::BufferType
BufferType
GPU buffer usage kind, drives backend binding flags and layout.
Definition
BufferBase.hpp:13
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
private
Graphics
OpenGL
OpenGLBuffer.hpp
Generated on
for SleakEngine by
1.18.0