HPC_Voxel_Engine 0.2.0
High-Performance C++ Voxel Engine
Loading...
Searching...
No Matches
Buffer.h
Go to the documentation of this file.
1#pragma once
2#include <glad/glad.h>
3
4namespace Renderer {
5
12public:
13 unsigned int m_RendererID;
14
20 VertexBuffer(const void* data, unsigned int uiSize) {
21 glCreateBuffers(1, &m_RendererID);
22 glNamedBufferData(m_RendererID, uiSize, data, GL_STATIC_DRAW);
23 }
24
25 ~VertexBuffer() { glDeleteBuffers(1, &m_RendererID); }
26
27 // Prevent copying (VBOs cannot be shared without reference counting)
28 VertexBuffer(const VertexBuffer&) = delete;
30
31 void Bind() const { glBindBuffer(GL_ARRAY_BUFFER, m_RendererID); }
32 void Unbind() const { glBindBuffer(GL_ARRAY_BUFFER, 0); }
36 void UpdateData(const void* data, unsigned int uiSize, unsigned int uiOffset = 0) const {
37 glNamedBufferSubData(m_RendererID, uiOffset, uiSize, data);
38 }
39};
40} // namespace Renderer
Wrapper for OpenGL VBO (Vertex Buffer Object). Stores raw vertex data (positions, colors,...
Definition Buffer.h:11
void UpdateData(const void *data, unsigned int uiSize, unsigned int uiOffset=0) const
Updates buffer data without reallocating memory (DSA).
Definition Buffer.h:36
~VertexBuffer()
Definition Buffer.h:25
void Unbind() const
Definition Buffer.h:32
unsigned int m_RendererID
Definition Buffer.h:13
VertexBuffer(const VertexBuffer &)=delete
void Bind() const
Definition Buffer.h:31
VertexBuffer & operator=(const VertexBuffer &)=delete
VertexBuffer(const void *data, unsigned int uiSize)
Creates and fills the buffer with data.
Definition Buffer.h:20
Definition Buffer.h:4