From b46a0d9369fbaa1938f0968ab216bc2d564a9c37 Mon Sep 17 00:00:00 2001 From: fschildt Date: Mon, 21 Jul 2025 16:07:28 +0200 Subject: first commit --- src/renderer/opengl/GlIndexBuffer.cpp | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/renderer/opengl/GlIndexBuffer.cpp (limited to 'src/renderer/opengl/GlIndexBuffer.cpp') diff --git a/src/renderer/opengl/GlIndexBuffer.cpp b/src/renderer/opengl/GlIndexBuffer.cpp new file mode 100644 index 0000000..c5bd713 --- /dev/null +++ b/src/renderer/opengl/GlIndexBuffer.cpp @@ -0,0 +1,44 @@ +#include + +#include +#include +#include +#include + +void GlIndexBuffer::Init() { + m_CurrentIndex = 0; + m_Indices.reserve(16384); + glGenBuffers(1, &m_Id); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_Id); +} + +uint32_t *GlIndexBuffer::GetData() { + return m_Indices.data(); +} + +uint32_t GlIndexBuffer::GetCount() { + uint32_t count = static_cast(m_Indices.size()); + return count; +} + +void GlIndexBuffer::Reset() { + m_CurrentIndex = 0; + m_Indices.clear(); +} + +void GlIndexBuffer::PushRectangle() { + uint32_t current_index = m_CurrentIndex; + m_Indices.push_back(current_index + 0); + m_Indices.push_back(current_index + 1); + m_Indices.push_back(current_index + 2); + m_Indices.push_back(current_index + 0); + m_Indices.push_back(current_index + 2); + m_Indices.push_back(current_index + 3); + m_CurrentIndex += 4; +} + +void GlIndexBuffer::TransferData() { + size_t size = m_Indices.size() * sizeof(uint32_t); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, m_Indices.data(), GL_STATIC_DRAW); +} + -- cgit v1.2.3