From bc2d88c799cb3913a5defe4ea9ddea9c56814349 Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 14 Aug 2025 18:21:00 +0200 Subject: [help]: I am going to throw my computer out a window --- src/Platform/OpenGL/OpenGLUniformBuffer.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/Platform/OpenGL/OpenGLUniformBuffer.cpp (limited to 'src/Platform/OpenGL/OpenGLUniformBuffer.cpp') diff --git a/src/Platform/OpenGL/OpenGLUniformBuffer.cpp b/src/Platform/OpenGL/OpenGLUniformBuffer.cpp new file mode 100644 index 0000000..631b863 --- /dev/null +++ b/src/Platform/OpenGL/OpenGLUniformBuffer.cpp @@ -0,0 +1,29 @@ +#include "OpenGLUniformBuffer.h" + +namespace Donut +{ + OpenGLUniformBuffer::OpenGLUniformBuffer(uint32_t size, uint32_t binding) + : m_Size(size), m_Binding(binding) + { + glGenBuffers(1, &m_RendererID); + glBindBuffer(GL_UNIFORM_BUFFER, m_RendererID); + glBufferData(GL_UNIFORM_BUFFER, size, nullptr, GL_DYNAMIC_DRAW); + glBindBufferBase(GL_UNIFORM_BUFFER, binding, m_RendererID); + } + + OpenGLUniformBuffer::~OpenGLUniformBuffer() + { + glDeleteBuffers(1, &m_RendererID); + } + + void OpenGLUniformBuffer::SetData(const void* data, uint32_t size, uint32_t offset) + { + glBindBuffer(GL_UNIFORM_BUFFER, m_RendererID); + glBufferSubData(GL_UNIFORM_BUFFER, offset, size, data); + } + + void OpenGLUniformBuffer::Bind(uint32_t binding) + { + glBindBufferBase(GL_UNIFORM_BUFFER, binding, m_RendererID); + } +}; -- cgit v1.3