From 650c814e2035d2328cab99cebe5cd419bd461a9b Mon Sep 17 00:00:00 2001 From: 4VRDriver <44267643+4VRDriver@users.noreply.github.com> Date: Wed, 9 Sep 2020 00:30:15 +0200 Subject: [PATCH] Optimize model loading --- CMakeLists.txt | 5 ++++- src/CMakeLists.txt | 1 - src/Model.cpp | 22 +++++++++------------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4091f1c..bfbf314 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ project(Fall-Fever) if(WIN32) set(GLFW3_ROOT "${PROJECT_SOURCE_DIR}/glfw") + include_directories(${PROJECT_SOURCE_DIR}/glfw/include) endif(WIN32) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") @@ -22,4 +23,6 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") add_subdirectory(${PROJECT_SOURCE_DIR}/lib) add_subdirectory(${PROJECT_SOURCE_DIR}/src) -add_subdirectory(${PROJECT_SOURCE_DIR}/tools) +if(!WIN32) + add_subdirectory(${PROJECT_SOURCE_DIR}/tools) +endif(!WIN32) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 50b28ab..81cc965 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,7 +18,6 @@ target_link_libraries( stb ${GLFW3_LIBRARY} ${OPENGL_LIBRARIES} - assimp ) target_compile_options(Fall-Fever PRIVATE -Wall -Wextra -pedantic) diff --git a/src/Model.cpp b/src/Model.cpp index fac9e91..465d5da 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -1,7 +1,6 @@ #include "Model.h" #include -#include #include Model::Model(const char* pathToModel) { @@ -69,9 +68,9 @@ void Model::loadModel(std::string pathToModel) { // Here starts the first mesh uint32_t numMeshes; - for(unsigned int j = 0; j < numMeshes; j++) { + input.read((char*) &numMeshes, sizeof(uint32_t)); - input.read((char*) &numMeshes, sizeof(uint32_t)); + for(unsigned int j = 0; j < numMeshes; j++) { uint32_t numMeshVertices, numMeshIndices, numMeshTextureIds; @@ -79,21 +78,18 @@ void Model::loadModel(std::string pathToModel) { input.read((char*) &numMeshIndices, sizeof(uint32_t)); input.read((char*) &numMeshTextureIds, sizeof(uint32_t)); + uint32_t vertexBlockSize = numMeshVertices * sizeof(Vertex); + uint32_t indexBlockSize = numMeshIndices * sizeof(uint32_t); + // Here starts the first Vertex data std::vector meshVertices; - for(unsigned int i = 0; i < numMeshVertices; i++) { - Vertex currentVertex; - input.read((char*) ¤tVertex, sizeof(Vertex)); - meshVertices.push_back(currentVertex); - } + meshVertices.resize(numMeshVertices); + input.read((char*) meshVertices.data(), vertexBlockSize); std::vector meshIndices; - for(unsigned int i = 0; i < numMeshIndices; i++) { - uint32_t currentIndex; - input.read((char*) ¤tIndex, sizeof(uint32_t)); - meshIndices.push_back(currentIndex); - } + meshIndices.resize(numMeshIndices); + input.read((char*) meshIndices.data(), indexBlockSize); std::vector meshTextures; for(unsigned int i = 0; i < numMeshTextureIds; i++) {