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/index_buffer.cpp | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'src/rendering/index_buffer.cpp') diff --git a/src/rendering/index_buffer.cpp b/src/rendering/index_buffer.cpp index 9603c72..2c933e0 100644 --- a/src/rendering/index_buffer.cpp +++ b/src/rendering/index_buffer.cpp @@ -1,21 +1,34 @@ #include "index_buffer.h" -#include "renderer.h" -#include "platform/opengl/opengl_index_buffer.h" -#include "platform/vulkan/vulkan_index_buffer.h" +#include -namespace Donut +namespace Donut { + IndexBuffer::IndexBuffer(const uint32_t* indices, uint32_t count) + : m_count(count) + { + glGenBuffers(1, &m_renderer_id); // glCreateBuffers is 4.5 DSA; unavailable on macOS 4.1 + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_renderer_id); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(uint32_t), indices, GL_STATIC_DRAW); + } + + IndexBuffer::~IndexBuffer() + { + glDeleteBuffers(1, &m_renderer_id); + } + + auto IndexBuffer::bind() const -> void + { + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_renderer_id); + } + + auto IndexBuffer::unbind() const -> void + { + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + auto IndexBuffer::create(const uint32_t* indices, uint32_t count) -> IndexBuffer* { - switch (Renderer::get_api()) - { - case RendererAPI::API::OpenGL: - return new OpenGLIndexBuffer(indices, count); - case RendererAPI::API::Vulkan: - return new VulkanIndexBuffer((uint32_t*)indices, count); - default: - return nullptr; - } + return new IndexBuffer(indices, count); } }; -- cgit v1.3