From 75f3941579c756655fc7d4d29e7b92b6eae436b7 Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 3 Oct 2022 07:21:44 +0200 Subject: Indexed Rendering --- src/Binder.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/Binder.cpp') diff --git a/src/Binder.cpp b/src/Binder.cpp index 8f9b7df..409c4ef 100644 --- a/src/Binder.cpp +++ b/src/Binder.cpp @@ -6,10 +6,11 @@ namespace MC { BindableMesh Binder::load(Mesh& mesh) { auto vao = create_vao(); - store_in_attribute_list(0, 3, mesh.flat(), mesh.size() * 3); + store_indices(mesh.raw_indices(), mesh.indices_size()); + store_in_attribute_list(0, 3, mesh.raw(), mesh.size() * 3); unbind_vao(); - return {vao, mesh.size()}; + return {vao, mesh.indices_size()}; } uint32_t Binder::create_vao() { @@ -24,6 +25,14 @@ uint32_t Binder::unbind_vao() { glBindVertexArray(0); } +void Binder::store_indices(uint32_t* indices, size_t indices_size) { + GLuint ebo; + glGenBuffers(1, &ebo); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_size * sizeof(float), indices, GL_STATIC_DRAW); +} + void Binder::store_in_attribute_list(uint32_t attribute, size_t size, float* data, size_t data_size) { GLuint vbo; glGenBuffers(1, &vbo); -- cgit 1.4.1