diff options
| author | hachem <im@hachem.wtf> | 2026-08-20 22:20:49 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-20 22:20:49 +0200 |
| commit | 45baf48db974c66cfdc51f26cee191abbbd89a0b (patch) | |
| tree | b60c27506f1e1c37b7238161156c83e7e159fc12 /src/rendering/uniform_buffer.cpp | |
| parent | 00bf9a8cce28ab1dbc77ba24428be12391c4a576 (diff) | |
[feat]: reduce renderer abstraction
Diffstat (limited to 'src/rendering/uniform_buffer.cpp')
| -rw-r--r-- | src/rendering/uniform_buffer.cpp | 41 |
1 files changed, 27 insertions, 14 deletions
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 <glad/glad.h> 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<UniformBuffer> { - switch (Renderer::get_api()) - { - case RendererAPI::API::OpenGL: - return create_ref<OpenGLUniformBuffer>(size, binding); - case RendererAPI::API::Vulkan: - return create_ref<VulkanUniformBuffer>(size, binding); - case RendererAPI::API::None: - return nullptr; - default: - return nullptr; - } + return create_ref<UniformBuffer>(size, binding); } }; |
