diff options
| author | hachem <im@hachem.wtf> | 2026-08-20 22:05:09 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-20 22:05:09 +0200 |
| commit | 0f49e8fd2a364f91f0a4c3bc2210fac4d9bf2ecc (patch) | |
| tree | 8afb5564714fec75b19dbe3b7a42df2cfbee34c5 /src/rendering/vertex_buffer.h | |
| parent | 85b63b3b61174a99811f3cba235da4537634edd4 (diff) | |
refactor: fold the OpenGL backend classes into rendering
Diffstat (limited to 'src/rendering/vertex_buffer.h')
| -rw-r--r-- | src/rendering/vertex_buffer.h | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/rendering/vertex_buffer.h b/src/rendering/vertex_buffer.h index 9cf66d8..3b6aea1 100644 --- a/src/rendering/vertex_buffer.h +++ b/src/rendering/vertex_buffer.h @@ -3,9 +3,9 @@ #include <cstdint> #include <vector> -namespace Donut +namespace Donut { - struct VertexBufferElement + struct VertexBufferElement { uint32_t type; uint32_t count; @@ -22,27 +22,27 @@ namespace Donut ~VertexBufferLayout() = default; template<typename T> - auto push(uint32_t count) -> void + auto push(uint32_t count) -> void { static_assert(false); } template<> - void push<float>(uint32_t count) + void push<float>(uint32_t count) { m_elements.push_back({ 0x1406, count, 0, m_stride }); m_stride += count * VertexBufferElement::get_size_of_type(0x1406); } template<> - void push<uint32_t>(uint32_t count) + void push<uint32_t>(uint32_t count) { m_elements.push_back({ 0x1405, count, 0, m_stride }); m_stride += count * VertexBufferElement::get_size_of_type(0x1405); } template<> - void push<uint8_t>(uint32_t count) + void push<uint8_t>(uint32_t count) { m_elements.push_back({ 0x1401, count, 1, m_stride }); m_stride += count * VertexBufferElement::get_size_of_type(0x1401); @@ -59,15 +59,20 @@ namespace Donut class VertexBuffer { public: - virtual ~VertexBuffer() = default; + VertexBuffer(const void* data, uint32_t size); + ~VertexBuffer(); - virtual auto bind() const -> void = 0; - virtual auto unbind() const -> void = 0; - virtual auto set_data(const void* data, uint32_t size) -> void = 0; + auto bind() const -> void; + auto unbind() const -> void; + auto set_data(const void* data, uint32_t size) -> void; - virtual auto get_layout() const -> const VertexBufferLayout& = 0; - virtual auto set_layout(const VertexBufferLayout& layout) -> void = 0; + auto get_layout() const -> const VertexBufferLayout& { return m_layout; } + auto set_layout(const VertexBufferLayout& layout) -> void { m_layout = layout; } static auto create(const void* data, uint32_t size) -> VertexBuffer*; + + private: + uint32_t m_renderer_id = 0; + VertexBufferLayout m_layout; }; }; |
