From 545252032496e0fa767468c98170ef62caba96f9 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Mon, 1 Aug 2022 22:33:33 -0400 Subject: [PATCH] Windows updates (@OgreTransporter) + Fix resource path on Windows + Fix missing OpenGL functions on Windows + Create static library + Fix CMake for newer assimp versions + Closes #2 --- CMakeLists.txt | 12 ++++++++++-- src/model.cpp | 2 ++ src/model.h | 3 ++- src/resourcemanager.cpp | 13 ++++++++++++- src/skybox.cpp | 2 ++ src/skybox.h | 3 ++- 6 files changed, 30 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97ef03b..8b0d152 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,7 @@ find_package(assimp REQUIRED) # Mainwidget include(GenerateExportHeader) -add_library(main-widget SHARED +add_library(main-widget STATIC src/mainwidget.cpp src/mainwidget.h src/mainwindow.cpp src/mainwindow.h src/mainwindow.ui src/input.cpp src/input.h @@ -67,8 +67,16 @@ add_library(main-widget SHARED ) target_include_directories(main-widget PUBLIC src/) +#if(TARGET assimp) target_link_libraries(main-widget PRIVATE assimp) -target_link_libraries(main-widget PUBLIC Qt${QT_VERSION_MAJOR}::OpenGLWidgets) +#else() +# target_link_libraries(main-widget PRIVATE assimp::assimp) +#endif() +target_link_libraries(main-widget PUBLIC Qt6::OpenGLWidgets) +if(WIN32) + find_package(OpenGL REQUIRED) + target_link_libraries(main-widget PUBLIC OpenGL::GL) +endif() ################################################################################ # Final Application diff --git a/src/model.cpp b/src/model.cpp index 5e32677..f814328 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -31,6 +31,8 @@ Model * Model::getInstance(const char * name) void ModelMesh::initMesh(const char * vert, const char * frag) { + initializeOpenGLFunctions(); + // Create VAO, VBO, EBO mVAO->create(); mVBO->create(); diff --git a/src/model.h b/src/model.h index 47c5124..e3a7c67 100644 --- a/src/model.h +++ b/src/model.h @@ -16,6 +16,7 @@ #include #include #include +#include // Assimp #include @@ -43,7 +44,7 @@ struct ModelTexture { class Model; -class ModelMesh { +class ModelMesh : protected QOpenGLFunctions { public: friend Model; typedef std::vector Vertices; diff --git a/src/resourcemanager.cpp b/src/resourcemanager.cpp index 71ffbf6..b1b6b60 100644 --- a/src/resourcemanager.cpp +++ b/src/resourcemanager.cpp @@ -7,7 +7,18 @@ ##############################################################################*/ #include "resourcemanager.h" +#include +#include +#include + +static std::string nixPath(std::string path) +{ +#ifdef Q_OS_WINDOWS + std::replace(path.begin(), path.end(), '\\', '/'); +#endif + return path; +} std::string RM::resourcesDir = - std::string(__FILE__).substr(0, std::string(__FILE__).find("src/")) + std::string(__FILE__).substr(0, nixPath(__FILE__).find("src/")) + "resources/"; diff --git a/src/skybox.cpp b/src/skybox.cpp index 87aa163..6b7db76 100644 --- a/src/skybox.cpp +++ b/src/skybox.cpp @@ -69,6 +69,8 @@ void Skybox::draw() void Skybox::init() { + initializeOpenGLFunctions(); + // Set up shader program mProgram.create(); mProgram.addShaderFromSourceFile(QOpenGLShader::Vertex, ":/skybox.vert"); diff --git a/src/skybox.h b/src/skybox.h index 83ab04d..7ededd0 100644 --- a/src/skybox.h +++ b/src/skybox.h @@ -13,12 +13,13 @@ #include #include #include +#include #include #include -class Skybox { +class Skybox : protected QOpenGLFunctions { public: // Delegate this constructor to use default skybox images // + This allows creating a skybox with no arguments ( auto s = new Skybox; )