From 3caf9e9a4ef3678facb2bcaaee0d87ac3dd2deb0 Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Wed, 4 Sep 2024 21:53:36 +0200 Subject: [PATCH] refactoring everything into multiple classes --- src/vulkan/application.cpp | 32 +++++++++++++++++++------------- src/vulkan/application.hpp | 14 ++++++++------ src/vulkan/buffer.cpp | 1 + src/vulkan/buffer.hpp | 3 ++- src/vulkan/command_pool.cpp | 1 + src/vulkan/command_pool.hpp | 4 +++- src/vulkan/pipeline.cpp | 1 + src/vulkan/pipeline.hpp | 3 ++- src/vulkan/swapchain.cpp | 1 + src/vulkan/swapchain.hpp | 2 +- 10 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/vulkan/application.cpp b/src/vulkan/application.cpp index 91b9e96..7086384 100644 --- a/src/vulkan/application.cpp +++ b/src/vulkan/application.cpp @@ -1,4 +1,10 @@ #include "application.hpp" +#include "vertex.hpp" +#include "swapchain.hpp" +#include "pipeline.hpp" +#include "instance.hpp" +#include "buffer.hpp" +#include "command_pool.hpp" Application::Application() { instance = new Instance; @@ -89,19 +95,6 @@ void Application::createSyncObjects() { } } -Application::~Application() { - delete swapchain; - for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++){ - vkDestroySemaphore(instance->device, imageAvailableSemaphores[i], nullptr); - vkDestroySemaphore(instance->device, renderFinishedSemaphores[i], nullptr); - vkDestroyFence(instance->device, inFlightFences[i], nullptr); - } - delete commandPool; - delete buffer; - delete pipeline; - delete instance; -} - void Application::recordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { VkCommandBufferBeginInfo beginInfo {}; beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -146,6 +139,19 @@ void Application::recordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t im vkEndCommandBuffer(commandBuffer); } +Application::~Application() { + delete swapchain; + for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++){ + vkDestroySemaphore(instance->device, imageAvailableSemaphores[i], nullptr); + vkDestroySemaphore(instance->device, renderFinishedSemaphores[i], nullptr); + vkDestroyFence(instance->device, inFlightFences[i], nullptr); + } + delete commandPool; + delete buffer; + delete pipeline; + delete instance; +} + diff --git a/src/vulkan/application.hpp b/src/vulkan/application.hpp index b055f11..a7b0370 100644 --- a/src/vulkan/application.hpp +++ b/src/vulkan/application.hpp @@ -13,12 +13,14 @@ #include #include #include -#include "vertex.hpp" -#include "swapchain.hpp" -#include "pipeline.hpp" -#include "instance.hpp" -#include "buffer.hpp" -#include "command_pool.hpp" +#include +#include + +class Instance; +class Swapchain; +class Pipeline; +class Buffer; +class CommandPool; constexpr int MAX_FRAMES_IN_FLIGHT = 2; diff --git a/src/vulkan/buffer.cpp b/src/vulkan/buffer.cpp index d75c638..6102a17 100644 --- a/src/vulkan/buffer.cpp +++ b/src/vulkan/buffer.cpp @@ -2,6 +2,7 @@ #include #include "buffer.hpp" #include "vertex.hpp" +#include "instance.hpp" const std::vector vertices = { {{0.0, -0.5}, {1, 0, 0}}, diff --git a/src/vulkan/buffer.hpp b/src/vulkan/buffer.hpp index 6911a74..7deffb5 100644 --- a/src/vulkan/buffer.hpp +++ b/src/vulkan/buffer.hpp @@ -2,7 +2,8 @@ #include #include -#include "instance.hpp" + +class Instance; class Buffer { diff --git a/src/vulkan/command_pool.cpp b/src/vulkan/command_pool.cpp index 024b656..64494a1 100644 --- a/src/vulkan/command_pool.cpp +++ b/src/vulkan/command_pool.cpp @@ -1,5 +1,6 @@ #include "command_pool.hpp" #include "application.hpp" +#include "instance.hpp" CommandPool::CommandPool(Instance *instance) : instance(instance) { Instance::QueueFamilyIndices indices = Instance::findQueueFamilies(instance->physicalDevice, instance->surface); diff --git a/src/vulkan/command_pool.hpp b/src/vulkan/command_pool.hpp index f913606..e945ccc 100644 --- a/src/vulkan/command_pool.hpp +++ b/src/vulkan/command_pool.hpp @@ -1,7 +1,9 @@ #pragma once #include -#include "instance.hpp" +#include + +class Instance; class CommandPool { public: diff --git a/src/vulkan/pipeline.cpp b/src/vulkan/pipeline.cpp index 26c0b6b..14a63a7 100644 --- a/src/vulkan/pipeline.cpp +++ b/src/vulkan/pipeline.cpp @@ -2,6 +2,7 @@ #include #include "pipeline.hpp" #include "vertex.hpp" +#include "instance.hpp" std::vector readFile(const std::string& fileName){ std::ifstream file(fileName, std::ios::ate | std::ios::binary); diff --git a/src/vulkan/pipeline.hpp b/src/vulkan/pipeline.hpp index 19fcc0c..3e3b7bd 100644 --- a/src/vulkan/pipeline.hpp +++ b/src/vulkan/pipeline.hpp @@ -1,7 +1,8 @@ #pragma once #include -#include "instance.hpp" + +class Instance; class Pipeline { public: diff --git a/src/vulkan/swapchain.cpp b/src/vulkan/swapchain.cpp index cf17d26..d5ecf13 100644 --- a/src/vulkan/swapchain.cpp +++ b/src/vulkan/swapchain.cpp @@ -1,6 +1,7 @@ #include #include #include "swapchain.hpp" +#include "instance.hpp" SwapchainSupportDetails querySwapchainSupport(VkPhysicalDevice device, VkSurfaceKHR surface){ SwapchainSupportDetails details; diff --git a/src/vulkan/swapchain.hpp b/src/vulkan/swapchain.hpp index 2756328..6804d8d 100644 --- a/src/vulkan/swapchain.hpp +++ b/src/vulkan/swapchain.hpp @@ -3,7 +3,7 @@ #include #include -#include "instance.hpp" +class Instance; struct SwapchainSupportDetails { VkSurfaceCapabilitiesKHR capabilities {};