From 488b1486bb501aab00576f6cad82e7afd14b28da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A4in=C3=A4m=C3=B6=20=C5=81=C5=ABmik=C4=93r=C3=B8?= Date: Fri, 14 Feb 2020 16:16:44 +0100 Subject: [PATCH] Exclude abstract Mesh class because of issues(TM) --- QubGL/src/Rendering/CubeMesh.cpp | 11 +++++++- QubGL/src/Rendering/CubeMesh.hpp | 19 +++++++------ QubGL/src/Rendering/Loader.cpp | 46 +++++++++++++++----------------- QubGL/src/Rendering/Loader.hpp | 13 ++++----- QubGL/src/Rendering/Mesh.hpp | 4 +-- QubGL/src/Rendering/Model.hpp | 4 +-- 6 files changed, 52 insertions(+), 45 deletions(-) diff --git a/QubGL/src/Rendering/CubeMesh.cpp b/QubGL/src/Rendering/CubeMesh.cpp index 1533a59..2b76d72 100644 --- a/QubGL/src/Rendering/CubeMesh.cpp +++ b/QubGL/src/Rendering/CubeMesh.cpp @@ -4,7 +4,8 @@ #include "VertexArrayObject.hpp" #include "VertexBufferObject.hpp" -CubeMesh::CubeMesh(std::vector* vertices, std::vector* indices) { +CubeMesh::CubeMesh(std::vector* vertices, std::vector* indices) + :m_ebo(nullptr), m_vao(nullptr), m_vbo(nullptr) { if (!m_isLoaded) { Load(vertices, indices); } @@ -24,6 +25,10 @@ void CubeMesh::Draw() const { Unbind(); } +std::string CubeMesh::GetName() const { + return m_name; +} + void CubeMesh::Load(std::vector* vertices, std::vector* indices) { m_ebo = new ElementBufferObject(); m_vao = new VertexArrayObject(); @@ -46,6 +51,10 @@ void CubeMesh::Load(std::vector* vertices, std::vector* in m_isLoaded = true; } +void CubeMesh::SetName(std::string name) { + m_name = name; +} + void CubeMesh::Unbind() const { m_ebo->Unbind(); m_vao->Unbind(); diff --git a/QubGL/src/Rendering/CubeMesh.hpp b/QubGL/src/Rendering/CubeMesh.hpp index 3738168..0d3e97e 100644 --- a/QubGL/src/Rendering/CubeMesh.hpp +++ b/QubGL/src/Rendering/CubeMesh.hpp @@ -1,19 +1,20 @@ #pragma once +#include #include -#include "Mesh.hpp" +struct Vertex; -class Vertex; - -class CubeMesh : public Mesh { +class CubeMesh { public: - CubeMesh(): m_ebo(nullptr), m_vbo(nullptr) { } + CubeMesh(): m_ebo(nullptr), m_vao(nullptr), m_vbo(nullptr) { } CubeMesh(std::vector* vertices, std::vector* indices); - virtual void Bind() const override; - virtual void Draw() const override; - virtual void Unbind() const override; + void Bind() const; + void Draw() const; + std::string GetName() const; + void SetName(std::string name); + void Unbind() const; private: void Load(std::vector* vertices, std::vector* indices); @@ -21,5 +22,7 @@ class CubeMesh : public Mesh { class ElementBufferObject* m_ebo; bool m_isLoaded = false; + std::string m_name = "unnamed"; + class VertexArrayObject* m_vao; class VertexBufferObject* m_vbo; }; \ No newline at end of file diff --git a/QubGL/src/Rendering/Loader.cpp b/QubGL/src/Rendering/Loader.cpp index 25a47ee..732a33f 100644 --- a/QubGL/src/Rendering/Loader.cpp +++ b/QubGL/src/Rendering/Loader.cpp @@ -22,7 +22,7 @@ vector Loader::GetIndices() { return m_indices; } -vector Loader::GetMeshes() { +vector Loader::GetMeshes() { return m_meshes; } @@ -30,7 +30,7 @@ vector Loader::GetVertices() { return m_vertices; } -void Loader::GenerateVerticesFromRawObj(vector& vertices, const vector& positions, const vector& coordinates, const vector& normals, string currentLine) { +void Loader::GenerateVerticesFromRawObj(vector& vertices, const vector& positions, const vector& coordinates, const vector& normals, string currentLine) { vector face, sVertices; Vertex vertex; @@ -39,47 +39,47 @@ void Loader::GenerateVerticesFromRawObj(vector& vertices, const vector positions; - vector coordinates; + vector coordinates; vector normals; vector vertices; @@ -165,14 +165,12 @@ bool Loader::ParseFile(const string& objFilePath) { if (objhelpers::firstToken(currentLine) == "vt") { vector sTexture; - glm::vec4 vTexture; + glm::vec2 vTexture; objhelpers::split(objhelpers::tail(currentLine), sTexture, " "); - vTexture.r = stof(sTexture[0]); - vTexture.g = stof(sTexture[1]); - vTexture.b = stof(sTexture[2]); - vTexture.a = stof(sTexture[3]); + vTexture.x = stof(sTexture[0]); + vTexture.y = stof(sTexture[1]); coordinates.push_back(vTexture); } @@ -251,7 +249,7 @@ void Loader::TriangulateVertices(vector& indices, const vector& indices, const vector& indices, const vector= 180) continue; auto inTriangle = false; diff --git a/QubGL/src/Rendering/Loader.hpp b/QubGL/src/Rendering/Loader.hpp index 580f889..3fb4676 100644 --- a/QubGL/src/Rendering/Loader.hpp +++ b/QubGL/src/Rendering/Loader.hpp @@ -1,13 +1,10 @@ #pragma once -#include "GLM/vec3.hpp" -#include "GLM/vec4.hpp" - #include #include -class Mesh; -class Vertex; +#include "CubeMesh.hpp" +#include "Vertex.hpp" class Loader { public: @@ -15,15 +12,15 @@ class Loader { ~Loader(); std::vector GetIndices(); - std::vector GetMeshes(); + std::vector GetMeshes(); std::vector GetVertices(); bool ParseFile(const std::string& objFilePath); private: - void GenerateVerticesFromRawObj(std::vector& vertices, const std::vector& positions, const std::vector& coordinates, const std::vector& normals, std::string currentLine); + void GenerateVerticesFromRawObj(std::vector& vertices, const std::vector& positions, const std::vector& coordinates, const std::vector& normals, std::string currentLine); void TriangulateVertices(std::vector& indices, const std::vector& vertices); std::vector m_indices; - std::vector m_meshes; + std::vector m_meshes; std::vector m_vertices; }; \ No newline at end of file diff --git a/QubGL/src/Rendering/Mesh.hpp b/QubGL/src/Rendering/Mesh.hpp index 44d66ba..6579cfc 100644 --- a/QubGL/src/Rendering/Mesh.hpp +++ b/QubGL/src/Rendering/Mesh.hpp @@ -17,6 +17,6 @@ class Mesh { } protected: - std::string m_name; - class VertexArrayObject* m_vao; + std::string m_name = "unnamed"; + class VertexArrayObject* m_vao = nullptr; }; \ No newline at end of file diff --git a/QubGL/src/Rendering/Model.hpp b/QubGL/src/Rendering/Model.hpp index 7e7a45d..ceb5d59 100644 --- a/QubGL/src/Rendering/Model.hpp +++ b/QubGL/src/Rendering/Model.hpp @@ -4,13 +4,13 @@ class Model { public: - Model(const class Mesh& mesh); + Model(const class CubeMesh& mesh); ~Model(); void Draw(const class ShaderProgram& shader); Transform& GetTransform(); private: - const class Mesh& m_mesh; + const class CubeMesh& m_mesh; Transform m_transform; }; \ No newline at end of file