From 45baf48db974c66cfdc51f26cee191abbbd89a0b Mon Sep 17 00:00:00 2001 From: hachem Date: Thu, 20 Aug 2026 22:20:49 +0200 Subject: [feat]: reduce renderer abstraction --- src/rendering/uniform_buffer.cpp | 41 ++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'src/rendering/uniform_buffer.cpp') diff --git a/src/rendering/uniform_buffer.cpp b/src/rendering/uniform_buffer.cpp index c344aec..c4118b8 100644 --- a/src/rendering/uniform_buffer.cpp +++ b/src/rendering/uniform_buffer.cpp @@ -1,23 +1,36 @@ #include "uniform_buffer.h" -#include "renderer.h" -#include "platform/opengl/opengl_uniform_buffer.h" -#include "platform/vulkan/vulkan_uniform_buffer.h" +#include namespace Donut { + UniformBuffer::UniformBuffer(uint32_t size, uint32_t binding) + : m_size(size), m_binding(binding) + { + glGenBuffers(1, &m_renderer_id); + glBindBuffer(GL_UNIFORM_BUFFER, m_renderer_id); + glBufferData(GL_UNIFORM_BUFFER, size, nullptr, GL_DYNAMIC_DRAW); + glBindBufferBase(GL_UNIFORM_BUFFER, binding, m_renderer_id); + } + + UniformBuffer::~UniformBuffer() + { + glDeleteBuffers(1, &m_renderer_id); + } + + auto UniformBuffer::set_data(const void* data, uint32_t size, uint32_t offset) -> void + { + glBindBuffer(GL_UNIFORM_BUFFER, m_renderer_id); + glBufferSubData(GL_UNIFORM_BUFFER, offset, size, data); + } + + auto UniformBuffer::bind(uint32_t binding) -> void + { + glBindBufferBase(GL_UNIFORM_BUFFER, binding, m_renderer_id); + } + auto UniformBuffer::create(uint32_t size, uint32_t binding) -> Ref { - switch (Renderer::get_api()) - { - case RendererAPI::API::OpenGL: - return create_ref(size, binding); - case RendererAPI::API::Vulkan: - return create_ref(size, binding); - case RendererAPI::API::None: - return nullptr; - default: - return nullptr; - } + return create_ref(size, binding); } }; -- cgit v1.3