From 84e0a87ba408b076c397af2db4b59ace444304cc Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 4 Jan 2023 11:14:52 +0200 Subject: [PATCH] method to update vertices --- mesh.cpp | 8 +++++++- mesh.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mesh.cpp b/mesh.cpp index 3d7493b..46ff1d6 100755 --- a/mesh.cpp +++ b/mesh.cpp @@ -73,6 +73,7 @@ namespace vb01{ glBindFramebuffer(GL_FRAMEBUFFER, *Root::getSingleton()->getFBO()); } + //TODO allow to init meshes to be drawn statically or dynamically void Mesh::initMesh(){ glGenVertexArrays(1, &VAO); glGenBuffers(1, &VBO); @@ -82,7 +83,7 @@ namespace vb01{ glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, 3 * meshBase.numTris * size, meshBase.vertices, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, 3 * meshBase.numTris * size, meshBase.vertices, GL_DYNAMIC_DRAW); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, 3 * meshBase.numTris * sizeof(u32), meshBase.indices, GL_STATIC_DRAW); @@ -107,6 +108,11 @@ namespace vb01{ } } + void Mesh::updateVerts(MeshData meshData){ + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferSubData(GL_ARRAY_BUFFER, 0, 3 * sizeof(MeshData::Vertex) * meshBase.numTris, meshData.vertices); + } + void Mesh::update(){ Root *root = Root::getSingleton(); Camera *cam = root->getCamera(); diff --git a/mesh.h b/mesh.h index 935fb8f..c73d7cd 100755 --- a/mesh.h +++ b/mesh.h @@ -21,9 +21,10 @@ namespace vb01{ Mesh(MeshData); ~Mesh(); void construct(); + void updateVerts(MeshData); virtual void update(); void render(); - void setMaterial(Material *mat){this->material = mat;} + inline void setMaterial(Material *mat){this->material = mat;} inline void setCastShadow(bool castShadow){this->castShadow = castShadow;} inline void setReflect(bool r){this->reflect = r;} inline void setReflective(bool r){this->reflective = r;}