hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src/rendering/index_buffer.cpp
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-20 22:05:09 +0200
committerhachem <im@hachem.wtf>2026-08-20 22:05:09 +0200
commit0f49e8fd2a364f91f0a4c3bc2210fac4d9bf2ecc (patch)
tree8afb5564714fec75b19dbe3b7a42df2cfbee34c5 /src/rendering/index_buffer.cpp
parent85b63b3b61174a99811f3cba235da4537634edd4 (diff)
refactor: fold the OpenGL backend classes into rendering
Diffstat (limited to 'src/rendering/index_buffer.cpp')
-rw-r--r--src/rendering/index_buffer.cpp39
1 files changed, 26 insertions, 13 deletions
diff --git a/src/rendering/index_buffer.cpp b/src/rendering/index_buffer.cpp
index 9603c72..38abe49 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 <glad/glad.h>
-namespace Donut
+namespace Donut
{
+ IndexBuffer::IndexBuffer(const uint32_t* indices, uint32_t count)
+ : m_count(count)
+ {
+ glGenBuffers(1, &m_renderer_id);
+ 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);
}
};