From 66ed52c5754203bfa26fa84e2470227760e3bca7 Mon Sep 17 00:00:00 2001 From: 4VRDriver <44267643+4VRDriver@users.noreply.github.com> Date: Tue, 15 Sep 2020 11:29:32 +0200 Subject: [PATCH] Fix high severity bug: Vertex Buffer was deleted in model loading process --- src/EventHandler.cpp | 10 +++++++--- src/EventHandler.h | 2 ++ src/Model.cpp | 4 ++-- src/Model.h | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/EventHandler.cpp b/src/EventHandler.cpp index 91d6732..b8265b2 100644 --- a/src/EventHandler.cpp +++ b/src/EventHandler.cpp @@ -20,13 +20,17 @@ EventHandler::EventHandler(GLFWwindow *window) void EventHandler::handleEvents() { - for(int i = 0; i < CAMERA_MOUSE_ACTION_NUM_ITEMS; i++) - cameraMouseActionRegister[i] = 0.0; - + clearActionRegisters(); glfwPollEvents(); } +void EventHandler::clearActionRegisters() { + //std::fill_n(cameraActionRegister, CAMERA_ACTION_NUM_ITEMS, 0); + std::fill_n(cameraMouseActionRegister, CAMERA_MOUSE_ACTION_NUM_ITEMS, 0.0); + std::fill_n(windowActionRegister, WINDOW_ACTION_NUM_ITEMS, 0); +} + void EventHandler::key_callback(GLFWwindow *window, int key, int scancode, int action, int mods) { // Silence warnings of unused variables. (void)window; (void)scancode; (void)mods; diff --git a/src/EventHandler.h b/src/EventHandler.h index 6c58ed5..06c556e 100644 --- a/src/EventHandler.h +++ b/src/EventHandler.h @@ -22,6 +22,8 @@ public: private: + void clearActionRegisters(); + static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods); static void mouse_callback(GLFWwindow* window, double xpos, double ypos); diff --git a/src/Model.cpp b/src/Model.cpp index 465d5da..bca6043 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -23,7 +23,7 @@ void Model::draw(ShaderProgram *shaderProgram) { // Iterate through every mesh and call the draw function for(auto it = meshes.begin(); it != meshes.end(); it++) { - it->draw(shaderProgram); + (*it)->draw(shaderProgram); } } @@ -98,7 +98,7 @@ void Model::loadModel(std::string pathToModel) { meshTextures.push_back(loadedTextures[currentTextureId]); } - Mesh currentMesh(meshVertices, meshIndices, meshTextures); + Mesh *currentMesh = new Mesh(meshVertices, meshIndices, meshTextures); meshes.push_back(currentMesh); } } diff --git a/src/Model.h b/src/Model.h index b06a1c2..ff37efd 100644 --- a/src/Model.h +++ b/src/Model.h @@ -19,7 +19,7 @@ private: void loadModel(std::string pathToModel); - std::vector meshes; + std::vector meshes; std::vector loadedTextures;