From ae76fa59e9da417289f75effc0e0424f778225ea Mon Sep 17 00:00:00 2001 From: GeorgH93 Date: Sat, 24 Oct 2020 23:02:01 +0200 Subject: [PATCH] Split IWindow a bit --- openVulkanoCpp/Base/UI/BaseWindow.hpp | 4 ++-- openVulkanoCpp/Base/UI/IOpenGlWindow.hpp | 21 +++++++++++++++++ openVulkanoCpp/Base/UI/IVulkanWindow.hpp | 23 +++++++++++++++++++ openVulkanoCpp/Base/UI/IWindow.hpp | 29 ++++-------------------- openVulkanoCpp/Base/Utils.hpp | 6 ----- openVulkanoCpp/Host/GLFW/WindowGLFW.hpp | 2 ++ openVulkanoCpp/Vulkan/Context.cpp | 1 + openVulkanoCpp/Vulkan/SwapChain.cpp | 1 + 8 files changed, 55 insertions(+), 32 deletions(-) create mode 100644 openVulkanoCpp/Base/UI/IOpenGlWindow.hpp create mode 100644 openVulkanoCpp/Base/UI/IVulkanWindow.hpp diff --git a/openVulkanoCpp/Base/UI/BaseWindow.hpp b/openVulkanoCpp/Base/UI/BaseWindow.hpp index 512b772..698417d 100644 --- a/openVulkanoCpp/Base/UI/BaseWindow.hpp +++ b/openVulkanoCpp/Base/UI/BaseWindow.hpp @@ -13,7 +13,7 @@ namespace openVulkanoCpp class BaseWindow : virtual public IWindow { protected: - const int windowId; + const uint32_t windowId; WindowConfiguration windowConfig; public: @@ -121,7 +121,7 @@ namespace openVulkanoCpp return nullptr; } - int GetWindowId() const override + [[nodiscard]] uint32_t GetWindowId() const override { return windowId; } diff --git a/openVulkanoCpp/Base/UI/IOpenGlWindow.hpp b/openVulkanoCpp/Base/UI/IOpenGlWindow.hpp new file mode 100644 index 0000000..a79c004 --- /dev/null +++ b/openVulkanoCpp/Base/UI/IOpenGlWindow.hpp @@ -0,0 +1,21 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "IWindow.hpp" + +namespace openVulkanoCpp +{ + class IOpenGlWindow : virtual public IWindow + { + public: + ~IOpenGlWindow() override = default; + + virtual void MakeCurrentThread() = 0; + virtual void Present() const = 0; + }; +} diff --git a/openVulkanoCpp/Base/UI/IVulkanWindow.hpp b/openVulkanoCpp/Base/UI/IVulkanWindow.hpp new file mode 100644 index 0000000..b10dd46 --- /dev/null +++ b/openVulkanoCpp/Base/UI/IVulkanWindow.hpp @@ -0,0 +1,23 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +#pragma once + +#include "IWindow.hpp" +#include +#include + +namespace openVulkanoCpp +{ + class IVulkanWindow : virtual public IWindow + { + public: + ~IVulkanWindow() override = default; + + virtual vk::SurfaceKHR CreateSurface(const vk::Instance& instance, const vk::AllocationCallbacks* pAllocator = nullptr) = 0; + virtual std::vector GetRequiredInstanceExtensions() = 0; + }; +} \ No newline at end of file diff --git a/openVulkanoCpp/Base/UI/IWindow.hpp b/openVulkanoCpp/Base/UI/IWindow.hpp index e03739b..5f4bd23 100644 --- a/openVulkanoCpp/Base/UI/IWindow.hpp +++ b/openVulkanoCpp/Base/UI/IWindow.hpp @@ -6,12 +6,11 @@ #pragma once -#include -#include #include -#include #include "../PlatformEnums.hpp" #include "../ICloseable.hpp" +#include +#include namespace openVulkanoCpp { @@ -82,34 +81,16 @@ namespace openVulkanoCpp virtual IVulkanWindow* GetVulkanWindow() = 0; virtual IOpenGlWindow* GetOpenGlWindow() = 0; - virtual int GetWindowId() const = 0; + [[nodiscard]] virtual uint32_t GetWindowId() const = 0; protected: - static int CreateWindowId() + static uint32_t CreateWindowId() { - static int id = 0; + static uint32_t id = 0; return id++; } }; - class IVulkanWindow : virtual public IWindow - { - public: - virtual ~IVulkanWindow() = default; - - virtual vk::SurfaceKHR CreateSurface(const vk::Instance& instance, const vk::AllocationCallbacks* pAllocator = nullptr) = 0; - virtual std::vector GetRequiredInstanceExtensions() = 0; - }; - - class IOpenGlWindow : virtual public IWindow - { - public: - virtual ~IOpenGlWindow() = default; - - virtual void MakeCurrentThread() = 0; - virtual void Present() const = 0; - }; - class IWindowHandler { public: diff --git a/openVulkanoCpp/Base/Utils.hpp b/openVulkanoCpp/Base/Utils.hpp index 486644d..774e9c7 100644 --- a/openVulkanoCpp/Base/Utils.hpp +++ b/openVulkanoCpp/Base/Utils.hpp @@ -10,7 +10,6 @@ #include #include #include -#include namespace openVulkanoCpp { @@ -56,11 +55,6 @@ namespace openVulkanoCpp return static_cast::type>(value); } - static inline bool MatchesAnyElementWise(const glm::vec3& a, const glm::vec3& b) - { - return a.x == b.x || a.y == b.y || a.z == b.z; - } - static inline size_t Align(size_t size, size_t alignment) { return (size + alignment - 1) & ~(alignment - 1); diff --git a/openVulkanoCpp/Host/GLFW/WindowGLFW.hpp b/openVulkanoCpp/Host/GLFW/WindowGLFW.hpp index 221e417..9927331 100644 --- a/openVulkanoCpp/Host/GLFW/WindowGLFW.hpp +++ b/openVulkanoCpp/Host/GLFW/WindowGLFW.hpp @@ -7,6 +7,8 @@ #pragma once #include "../../Base/UI/BaseWindow.hpp" +#include "../../Base/UI/IVulkanWindow.hpp" +#include "../../Base/UI/IOpenGlWindow.hpp" #include "../../Base/IPlatform.hpp" #include "InputProviderGLFW.hpp" diff --git a/openVulkanoCpp/Vulkan/Context.cpp b/openVulkanoCpp/Vulkan/Context.cpp index 53f2ab4..8506841 100644 --- a/openVulkanoCpp/Vulkan/Context.cpp +++ b/openVulkanoCpp/Vulkan/Context.cpp @@ -10,6 +10,7 @@ #include "../Base/IGraphicsApp.hpp" #include "../Base/IGraphicsAppManager.hpp" #include "../Base/EngineConstants.hpp" +#include "../Base/UI/IVulkanWindow.hpp" #include "Debuging/ValidationLayer.hpp" namespace openVulkanoCpp::Vulkan diff --git a/openVulkanoCpp/Vulkan/SwapChain.cpp b/openVulkanoCpp/Vulkan/SwapChain.cpp index 41caa15..1733066 100644 --- a/openVulkanoCpp/Vulkan/SwapChain.cpp +++ b/openVulkanoCpp/Vulkan/SwapChain.cpp @@ -7,6 +7,7 @@ #include "SwapChain.hpp" #include "../Base/Logger.hpp" #include "../Base/Utils.hpp" +#include "../Base/UI/IVulkanWindow.hpp" #include namespace openVulkanoCpp::Vulkan