diff --git a/src/Mesh.cpp b/src/Mesh.cpp index 81f49a1..6b9b227 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -39,7 +39,7 @@ void Mesh::setupMesh() { glBindVertexArray(0); } -void Mesh::Draw(ShaderLoader &shader) { +void Mesh::draw(ShaderLoader &shader) { unsigned int diffuseNr = 1; unsigned int specularNr = 1; for (unsigned int i = 0; i < textures.size(); i++) { diff --git a/src/Mesh.h b/src/Mesh.h index 69970eb..598de7a 100644 --- a/src/Mesh.h +++ b/src/Mesh.h @@ -28,7 +28,7 @@ public: std::vector indices; std::vector textures; - void Draw(ShaderLoader &shader); + void draw(ShaderLoader &shader); Mesh(std::vector vertices, std::vector indices, std::vector textures); diff --git a/src/Model.cpp b/src/Model.cpp new file mode 100644 index 0000000..9493bc5 --- /dev/null +++ b/src/Model.cpp @@ -0,0 +1,9 @@ +#include "Model.h" + +Model::Model(Mesh mesh) { this->meshes.push_back(mesh); } +Model::Model(std::vector meshes) { this->meshes = meshes; } + +void Model::draw(ShaderLoader &shader) { + for (unsigned int i = 0; i < this->meshes.size(); i++) + this->meshes[i].draw(shader); +} diff --git a/src/Model.h b/src/Model.h new file mode 100644 index 0000000..99b7c2c --- /dev/null +++ b/src/Model.h @@ -0,0 +1,19 @@ +#pragma once +#include "Error.h" +#include "Mesh.h" +#include "ShaderLoader.h" +#include + +class Model { +private: + Error error = Error("Model"); + + std::vector meshes; + +public: + // Used to create a mesh out of a single mesh. + Model(Mesh mesh); + // Used to create a mesh out of multiple meshes. + Model(std::vector meshes); + void draw(ShaderLoader &shader); +}; diff --git a/src/main.cpp b/src/main.cpp index c87b3a5..c8ad3b8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,7 @@ #include "helpers/RootDir.h" // Objects #include "Mesh.h" +#include "Model.h" #include // Include error class @@ -176,6 +177,13 @@ int main(int argc, char **argv) { Mesh mesh2(mvertices2, mindices, mtextures); + std::vector modelMeshes; + modelMeshes.push_back(mesh); + modelMeshes.push_back(mesh2); + Model model(modelMeshes); + + Model model2(mesh); + // Mess with perspective // Projection matrix : 45° Field of View, 4:3 ratio, display range : 0.1 // unit <-> 100 units @@ -213,8 +221,10 @@ int main(int argc, char **argv) { shader.setMat4("MVP", camera.getMVP()); // Draw Meshes - mesh.Draw(shader); - mesh2.Draw(shader); + // mesh.draw(shader); + // mesh2.draw(shader); + model2.draw(shader); + model.draw(shader); // Finally render everything shader.use();