summary refs log tree commit diff
path: root/src/Binder.cpp
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-10-03 07:21:44 +0200
committerMel <einebeere@gmail.com>2022-10-03 07:21:44 +0200
commit75f3941579c756655fc7d4d29e7b92b6eae436b7 (patch)
treef8fab6809cd9525d060cfa62269f00d7ff3ea793 /src/Binder.cpp
parent3b289a2f75b6e96735519a65d93b6babd1b1759f (diff)
downloadmeowcraft-75f3941579c756655fc7d4d29e7b92b6eae436b7.tar.zst
meowcraft-75f3941579c756655fc7d4d29e7b92b6eae436b7.zip
Indexed Rendering
Diffstat (limited to 'src/Binder.cpp')
-rw-r--r--src/Binder.cpp13
1 files changed, 11 insertions, 2 deletions
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);