From ad84d0686f1d7f72e86b55cdadd8272f225f776d Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 23 Oct 2022 21:28:09 +0200 Subject: Modular mesh vertex attributes --- src/GFX/Binder.hpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/GFX/Binder.hpp') diff --git a/src/GFX/Binder.hpp b/src/GFX/Binder.hpp index 99f9791..3d3949b 100644 --- a/src/GFX/Binder.hpp +++ b/src/GFX/Binder.hpp @@ -8,15 +8,25 @@ namespace MC::GFX { class BindableMesh { public: void bind() const; - void unbind(); + void unbind() const; + bool has_indices() const; size_t size() const; private: - BindableMesh(uint32_t vao, size_t vertex_count) : m_vao(vao), m_vertex_count(vertex_count) {}; + BindableMesh( + uint32_t vao, + size_t vertex_count, + size_t attribute_count + ) : m_vao(vao), + m_vertex_count(vertex_count), + m_has_indices(vertex_count > 0), + m_attribute_count(attribute_count) {}; uint32_t m_vao; size_t m_vertex_count; + bool m_has_indices; + size_t m_attribute_count; friend class Binder; }; @@ -31,7 +41,7 @@ private: static uint32_t create_vao(); static void unbind_vao(); - static void store_in_attribute_list(uint32_t attribute, size_t size, float* data, size_t data_size); + static void store_in_attribute_list(uint32_t attribute, int attribute_size, int type_size, void* data, long data_size); static void store_indices(uint32_t* indices, size_t indices_size); }; -- cgit 1.4.1