From ac0a0e84b47f3fe58d70e34e01d41075e3fc600e Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Mon, 6 Jan 2025 16:28:27 +0100 Subject: [PATCH] Remove ICloseable --- openVulkanoCpp/Base/ICloseable.hpp | 12 ------------ openVulkanoCpp/Base/IGraphicsApp.hpp | 4 ++-- openVulkanoCpp/Base/IPlatform.hpp | 5 ++--- openVulkanoCpp/Base/Render/IRenderer.hpp | 4 ++-- openVulkanoCpp/Base/UI/IWindow.hpp | 6 +++--- openVulkanoCpp/Controller/CameraController.hpp | 5 ++--- openVulkanoCpp/Host/GLFW/InputProviderGLFW.hpp | 5 ++--- openVulkanoCpp/Input/InputDevice.hpp | 7 +++---- openVulkanoCpp/Scene/Drawable.hpp | 5 ++--- openVulkanoCpp/Scene/Geometry.hpp | 5 ++--- openVulkanoCpp/Scene/Node.hpp | 7 +++---- openVulkanoCpp/Scene/Scene.hpp | 4 ++-- openVulkanoCpp/Scene/Shader/Shader.hpp | 7 +++---- openVulkanoCpp/Vulkan/Buffer.hpp | 6 +++--- openVulkanoCpp/Vulkan/CommandHelper.hpp | 5 ++--- openVulkanoCpp/Vulkan/Context.hpp | 6 +++--- openVulkanoCpp/Vulkan/Device.hpp | 5 ++--- openVulkanoCpp/Vulkan/FrameBuffer.hpp | 5 ++--- openVulkanoCpp/Vulkan/Image.hpp | 2 +- openVulkanoCpp/Vulkan/Metal/MetalTextureCache.h | 5 ++--- openVulkanoCpp/Vulkan/RenderPass.hpp | 6 +++--- openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp | 5 ++--- 22 files changed, 48 insertions(+), 73 deletions(-) delete mode 100644 openVulkanoCpp/Base/ICloseable.hpp diff --git a/openVulkanoCpp/Base/ICloseable.hpp b/openVulkanoCpp/Base/ICloseable.hpp deleted file mode 100644 index 07f143a..0000000 --- a/openVulkanoCpp/Base/ICloseable.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -namespace OpenVulkano -{ - class ICloseable - { - public: - virtual ~ICloseable() = default; - - virtual void Close() = 0; - }; -} \ No newline at end of file diff --git a/openVulkanoCpp/Base/IGraphicsApp.hpp b/openVulkanoCpp/Base/IGraphicsApp.hpp index c282416..4055b5e 100644 --- a/openVulkanoCpp/Base/IGraphicsApp.hpp +++ b/openVulkanoCpp/Base/IGraphicsApp.hpp @@ -7,7 +7,6 @@ #pragma once #include "ITickable.hpp" -#include "ICloseable.hpp" #include "Version.hpp" #include @@ -15,7 +14,7 @@ namespace OpenVulkano { class IGraphicsAppManager; - class IGraphicsApp : public ITickable, public ICloseable + class IGraphicsApp : public ITickable { private: IGraphicsAppManager* m_manager = nullptr; @@ -25,6 +24,7 @@ namespace OpenVulkano virtual void Init() = 0; virtual void InitPostGraphics() {} + virtual void Close() {} virtual void CloseFinalize() {} [[nodiscard]] IGraphicsAppManager* GetGraphicsAppManager() const { return m_manager; } void SetGraphicsAppManager(IGraphicsAppManager* manager) { m_manager = manager; } diff --git a/openVulkanoCpp/Base/IPlatform.hpp b/openVulkanoCpp/Base/IPlatform.hpp index d6c99d4..65fc847 100644 --- a/openVulkanoCpp/Base/IPlatform.hpp +++ b/openVulkanoCpp/Base/IPlatform.hpp @@ -1,7 +1,6 @@ #pragma once #include "ITickable.hpp" -#include "ICloseable.hpp" #include "UI/IWindow.hpp" namespace OpenVulkano @@ -12,11 +11,11 @@ namespace OpenVulkano PlatformInitFailedException(char const* const message) : runtime_error(message) {} }; - class IPlatform : public ITickable, public ICloseable + class IPlatform : public ITickable { public: virtual void Init() = 0; - + virtual void Close() = 0; virtual IWindow* MakeWindow() = 0; }; } diff --git a/openVulkanoCpp/Base/Render/IRenderer.hpp b/openVulkanoCpp/Base/Render/IRenderer.hpp index 59d8dd7..63cce17 100644 --- a/openVulkanoCpp/Base/Render/IRenderer.hpp +++ b/openVulkanoCpp/Base/Render/IRenderer.hpp @@ -8,7 +8,6 @@ #include "IResourceManager.hpp" #include "Base/ITickable.hpp" -#include "Base/ICloseable.hpp" #include "Scene/Scene.hpp" #include "Scene/UI/UI.hpp" #include @@ -18,12 +17,13 @@ namespace OpenVulkano class IWindow; class IGraphicsAppManager; - class IRenderer : public ITickable, public ICloseable + class IRenderer : public ITickable { public: virtual ~IRenderer() = default; virtual void Init(IGraphicsAppManager* graphicsAppManager, IWindow* window) = 0; + virtual void Close() = 0; virtual std::string GetMainRenderDeviceName() = 0; virtual void Resize(uint32_t newWidth, uint32_t newHeight) = 0; diff --git a/openVulkanoCpp/Base/UI/IWindow.hpp b/openVulkanoCpp/Base/UI/IWindow.hpp index 876cd19..4b7c868 100644 --- a/openVulkanoCpp/Base/UI/IWindow.hpp +++ b/openVulkanoCpp/Base/UI/IWindow.hpp @@ -8,7 +8,6 @@ #include "Math/Math.hpp" #include "Base/PlatformEnums.hpp" -#include "Base/ICloseable.hpp" #include #include @@ -36,12 +35,13 @@ namespace OpenVulkano bool resizeable = true; }; - class IWindow : public ICloseable + class IWindow { public: - ~IWindow() override = default; + virtual ~IWindow() = default; virtual void Init(RenderAPI::RenderApi renderApi) = 0; + virtual void Close() = 0; virtual bool WindowHasBeenDestroyed() const = 0; virtual void SetWindowHasBeenDestroyed() = 0; diff --git a/openVulkanoCpp/Controller/CameraController.hpp b/openVulkanoCpp/Controller/CameraController.hpp index 80bfa2d..171e140 100644 --- a/openVulkanoCpp/Controller/CameraController.hpp +++ b/openVulkanoCpp/Controller/CameraController.hpp @@ -7,7 +7,6 @@ #pragma once #include "Base/ITickable.hpp" -#include "Base/ICloseable.hpp" namespace OpenVulkano { @@ -16,7 +15,7 @@ namespace OpenVulkano class Camera; } - class CameraController : public ITickable, ICloseable + class CameraController : public ITickable { Scene::Camera* m_camera; @@ -30,7 +29,7 @@ namespace OpenVulkano virtual void Init(Scene::Camera* camera) { m_camera = camera; } - void Close() override { m_camera = nullptr; } + virtual void Close() { m_camera = nullptr; } void SetCamera(Scene::Camera* camera) { m_camera = camera; } diff --git a/openVulkanoCpp/Host/GLFW/InputProviderGLFW.hpp b/openVulkanoCpp/Host/GLFW/InputProviderGLFW.hpp index 2e9a2b9..3ca8fe2 100644 --- a/openVulkanoCpp/Host/GLFW/InputProviderGLFW.hpp +++ b/openVulkanoCpp/Host/GLFW/InputProviderGLFW.hpp @@ -7,7 +7,6 @@ #pragma once #include "Base/ITickable.hpp" -#include "Base/ICloseable.hpp" #include "Base/IPlatform.hpp" #include "InputDeviceGLFW.hpp" #include @@ -18,7 +17,7 @@ namespace OpenVulkano { class WindowGLFW; - class InputProviderGLFW final : public ITickable, public ICloseable + class InputProviderGLFW final : public ITickable { friend WindowGLFW; static InputProviderGLFW* INSTANCE; @@ -32,7 +31,7 @@ namespace OpenVulkano public: void Init(); - void Close() override; + virtual void Close(); void PreTick(); diff --git a/openVulkanoCpp/Input/InputDevice.hpp b/openVulkanoCpp/Input/InputDevice.hpp index 9649a67..ff50491 100644 --- a/openVulkanoCpp/Input/InputDevice.hpp +++ b/openVulkanoCpp/Input/InputDevice.hpp @@ -6,12 +6,11 @@ #pragma once -#include "Base/ICloseable.hpp" #include "InputKey.hpp" namespace OpenVulkano::Input { - class InputDevice : public ICloseable + class InputDevice { InputDeviceType deviceType = InputDeviceType::UNKNOWN; int index = -1; @@ -38,11 +37,11 @@ namespace OpenVulkano::Input [[nodiscard]] virtual bool ReadButtonDown(int16_t key) const = 0; public: - ~InputDevice() override = default; + virtual ~InputDevice() = default; virtual void Tick() {} - void Close() override + virtual void Close() { this->deviceType = InputDeviceType::UNKNOWN; this->index = -1; diff --git a/openVulkanoCpp/Scene/Drawable.hpp b/openVulkanoCpp/Scene/Drawable.hpp index 2c24b0d..42c9bdb 100644 --- a/openVulkanoCpp/Scene/Drawable.hpp +++ b/openVulkanoCpp/Scene/Drawable.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Scene/IRayIntersectable.hpp" #include "DrawEncoder.hpp" #include @@ -27,7 +26,7 @@ namespace OpenVulkano::Scene BACKGROUND = 0, MAIN, TRANSPARENT, POST }; - class Drawable : public ICloseable, public IRayIntersectable + class Drawable : public IRayIntersectable { std::vector m_nodes; Scene* m_scene = nullptr; @@ -43,7 +42,7 @@ namespace OpenVulkano::Scene ~Drawable() override {/* if (m_scene) Drawable::Close();*/ } - void Close() override; + virtual void Close(); void SetShader(Shader* shader) { m_shader = shader; } diff --git a/openVulkanoCpp/Scene/Geometry.hpp b/openVulkanoCpp/Scene/Geometry.hpp index 5522ac5..cd62b18 100644 --- a/openVulkanoCpp/Scene/Geometry.hpp +++ b/openVulkanoCpp/Scene/Geometry.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Base/Render/RenderResource.hpp" #include "Math/AABB.hpp" #include "Base/Utils.hpp" @@ -22,7 +21,7 @@ namespace OpenVulkano UINT16 = sizeof(uint16_t), UINT32 = sizeof(uint32_t) }; - class Geometry : public RenderResourceHolder, public ICloseable + class Geometry : public RenderResourceHolder { friend class MeshLoader; public: @@ -51,7 +50,7 @@ namespace OpenVulkano void SetIndices(const uint32_t* data, uint32_t size, uint32_t dstOffset = 0) const; - void Close() override; + virtual void Close(); void Free(); diff --git a/openVulkanoCpp/Scene/Node.hpp b/openVulkanoCpp/Scene/Node.hpp index abcdcff..fb0886d 100644 --- a/openVulkanoCpp/Scene/Node.hpp +++ b/openVulkanoCpp/Scene/Node.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Base/Render/RenderResource.hpp" #include "Math/Math.hpp" #include "Math/Pose.hpp" @@ -20,7 +19,7 @@ namespace OpenVulkano::Scene { class Scene; - class Node : public RenderResourceHolder, public ICloseable + class Node : public RenderResourceHolder { friend Scene; @@ -41,11 +40,11 @@ namespace OpenVulkano::Scene Node(const Math::Matrix4f& pose); - ~Node() noexcept override; + virtual ~Node() noexcept; void Init(); - void Close() override; + virtual void Close(); void AddChild(Node* node); diff --git a/openVulkanoCpp/Scene/Scene.hpp b/openVulkanoCpp/Scene/Scene.hpp index a3dc720..e83e910 100644 --- a/openVulkanoCpp/Scene/Scene.hpp +++ b/openVulkanoCpp/Scene/Scene.hpp @@ -15,7 +15,7 @@ namespace OpenVulkano { namespace Scene { - class Scene : public ICloseable + class Scene { public: Node* root; @@ -46,7 +46,7 @@ namespace OpenVulkano this->root = root; } - void Close() override + virtual void Close() { //TODO } diff --git a/openVulkanoCpp/Scene/Shader/Shader.hpp b/openVulkanoCpp/Scene/Shader/Shader.hpp index aec8bc9..53c2594 100644 --- a/openVulkanoCpp/Scene/Shader/Shader.hpp +++ b/openVulkanoCpp/Scene/Shader/Shader.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Base/Utils.hpp" #include "Base/Render/RenderResource.hpp" #include "VertexInputDescription.hpp" @@ -81,7 +80,7 @@ namespace OpenVulkano::Scene }; - class Shader final : public RenderResourceHolder, public ICloseable + class Shader final : public RenderResourceHolder { public: std::vector shaderPrograms{}; @@ -99,7 +98,7 @@ namespace OpenVulkano::Scene float depthBiasClamp = 0.0f, depthBiasSlope = 0.0f, depthBiasConstant = 0.0f; Shader() = default; - ~Shader() override { Shader::Close(); } + ~Shader() { Shader::Close(); } Shader& AddShaderProgram(const ShaderProgram& shaderProgram) { @@ -173,7 +172,7 @@ namespace OpenVulkano::Scene depthBiasConstant = constant; } - void Close() override + void Close() { if (HasRenderResource()) GetRenderResource().Release(); diff --git a/openVulkanoCpp/Vulkan/Buffer.hpp b/openVulkanoCpp/Vulkan/Buffer.hpp index 373497c..e737f23 100644 --- a/openVulkanoCpp/Vulkan/Buffer.hpp +++ b/openVulkanoCpp/Vulkan/Buffer.hpp @@ -1,5 +1,5 @@ #pragma once -#include "Base/ICloseable.hpp" + #include "Device.hpp" namespace OpenVulkano @@ -9,7 +9,7 @@ namespace OpenVulkano /** * \brief A not managed buffer. This should be used rarely. */ - struct Buffer : public ICloseable + struct Buffer { vk::Device device; vk::DeviceMemory memory; @@ -94,7 +94,7 @@ namespace OpenVulkano device.invalidateMappedMemoryRanges(vk::MappedMemoryRange(memory, offset, size)); } - void Close() override + void Close() { if (mapped) UnMap(); if(memory) diff --git a/openVulkanoCpp/Vulkan/CommandHelper.hpp b/openVulkanoCpp/Vulkan/CommandHelper.hpp index f109db3..2dcaf78 100644 --- a/openVulkanoCpp/Vulkan/CommandHelper.hpp +++ b/openVulkanoCpp/Vulkan/CommandHelper.hpp @@ -6,14 +6,13 @@ #pragma once -#include "Base/ICloseable.hpp" #include namespace OpenVulkano { namespace Vulkan { - struct CommandHelper : virtual ICloseable + struct CommandHelper final { vk::Device device; vk::CommandPool cmdPool; @@ -42,7 +41,7 @@ namespace OpenVulkano return level; } - void Close() override + void Close() { device.freeCommandBuffers(cmdPool, 1, &cmdBuffer); device.destroyCommandPool(cmdPool); diff --git a/openVulkanoCpp/Vulkan/Context.hpp b/openVulkanoCpp/Vulkan/Context.hpp index 18d4765..644b2cb 100644 --- a/openVulkanoCpp/Vulkan/Context.hpp +++ b/openVulkanoCpp/Vulkan/Context.hpp @@ -21,7 +21,7 @@ namespace OpenVulkano { class Device; - class Context final : public ICloseable + class Context final { bool enableValidationLayer, initialized; std::set requiredExtensions; @@ -45,14 +45,14 @@ namespace OpenVulkano #endif } - ~Context() override + ~Context() { if (initialized) Close(); } void Init(IGraphicsAppManager* graphicsAppManager, IVulkanWindow* window); - void Close() override; + void Close(); void Resize(uint32_t newWidth, uint32_t newHeight); diff --git a/openVulkanoCpp/Vulkan/Device.hpp b/openVulkanoCpp/Vulkan/Device.hpp index 6a26226..a6c99b0 100644 --- a/openVulkanoCpp/Vulkan/Device.hpp +++ b/openVulkanoCpp/Vulkan/Device.hpp @@ -10,13 +10,12 @@ #include #include #include -#include "Base/ICloseable.hpp" namespace OpenVulkano { namespace Vulkan { - class Device : public ICloseable + class Device final { public: vk::PhysicalDevice physicalDevice; @@ -106,7 +105,7 @@ namespace OpenVulkano return memoryProperties.memoryTypes[memoryType].propertyFlags; } - void Close() override; + void Close(); }; } } diff --git a/openVulkanoCpp/Vulkan/FrameBuffer.hpp b/openVulkanoCpp/Vulkan/FrameBuffer.hpp index e9d68ca..757d9f9 100644 --- a/openVulkanoCpp/Vulkan/FrameBuffer.hpp +++ b/openVulkanoCpp/Vulkan/FrameBuffer.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Image.hpp" #include "Device.hpp" #include @@ -17,7 +16,7 @@ namespace OpenVulkano::Vulkan { class RenderPass; - class FrameBuffer : ICloseable + class FrameBuffer { Image depthBuffer; std::vector frameBuffers; @@ -50,7 +49,7 @@ namespace OpenVulkano::Vulkan protected: void Resize(vk::Extent3D size); - void Close() override + virtual void Close() { DestroyFrameBuffer(); if(depthBuffer) depthBuffer.Close(); diff --git a/openVulkanoCpp/Vulkan/Image.hpp b/openVulkanoCpp/Vulkan/Image.hpp index 40d8ad1..7b820b4 100644 --- a/openVulkanoCpp/Vulkan/Image.hpp +++ b/openVulkanoCpp/Vulkan/Image.hpp @@ -47,7 +47,7 @@ namespace OpenVulkano::Vulkan SetLayout(cmdBuffer, vk::ImageSubresourceRange(aspectMask, 0, 1, 0, 1), newLayout, oldLayout); } - void Close() override; + virtual void Close(); operator bool() const { return image.operator bool(); } diff --git a/openVulkanoCpp/Vulkan/Metal/MetalTextureCache.h b/openVulkanoCpp/Vulkan/Metal/MetalTextureCache.h index 7a4c226..e1f98cd 100644 --- a/openVulkanoCpp/Vulkan/Metal/MetalTextureCache.h +++ b/openVulkanoCpp/Vulkan/Metal/MetalTextureCache.h @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "MetalBackedTexture.h" #import @@ -16,7 +15,7 @@ namespace OpenVulkano::Vulkan { class Renderer; - class MetalTextureCache : public ICloseable + class MetalTextureCache final { CVMetalTextureCacheRef m_textureCache = nullptr; Vulkan::ResourceManager* m_resourceManager = nullptr; @@ -28,7 +27,7 @@ namespace OpenVulkano::Vulkan void Init(IRenderer* renderer); - void Close() override; + void Close(); Scene::Texture* Get(CVPixelBufferRef pixelBuffer, MTLPixelFormat pixelFormat); diff --git a/openVulkanoCpp/Vulkan/RenderPass.hpp b/openVulkanoCpp/Vulkan/RenderPass.hpp index 71a7f3f..fbedfab 100644 --- a/openVulkanoCpp/Vulkan/RenderPass.hpp +++ b/openVulkanoCpp/Vulkan/RenderPass.hpp @@ -13,7 +13,7 @@ namespace OpenVulkano::Vulkan { class FrameBuffer; - class RenderPass : public ICloseable + class RenderPass { //TODO allow to control the render rect size protected: vk::Device m_device; @@ -27,14 +27,14 @@ namespace OpenVulkano::Vulkan RenderPass() = default; - ~RenderPass() override + virtual ~RenderPass() { if (m_frameBuffer) RenderPass::Close(); } void Init(Device* device, FrameBuffer* frameBuffer, bool clearColor = false, bool clearDepth = false); - void Close() override; + virtual void Close(); void SetClearColor(vk::ClearColorValue clearColor = vk::ClearColorValue(std::array{ 0.39f, 0.58f, 0.93f, 1.0f })) { diff --git a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp index 656ae61..a9feeb9 100644 --- a/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp +++ b/openVulkanoCpp/Vulkan/Resources/UniformBuffer.hpp @@ -6,7 +6,6 @@ #pragma once -#include "Base/ICloseable.hpp" #include "Vulkan/Resources/ManagedBuffer.hpp" #include "Vulkan/Scene/IRecordable.hpp" @@ -14,7 +13,7 @@ namespace OpenVulkano::Vulkan { class ManagedBuffer; - class UniformBuffer final : public IRecordable, public ICloseable + class UniformBuffer final : public IRecordable { ManagedBuffer::Ptr m_buffer = nullptr; vk::DescriptorSet m_descriptorSet; @@ -30,7 +29,7 @@ namespace OpenVulkano::Vulkan void Init(ManagedBuffer::Ptr buffer, uint32_t frameOffset, uint32_t frameSize, vk::DescriptorSetLayout* descriptorSetLayout, const DescriptorSetLayoutBinding& binding, uint32_t setId); - void Close() override; + virtual void Close(); void Record(VulkanDrawContext* drawContext) override;