Перенёс управление VkSwapchainKHR и ImageViews в отдельный класс

This commit is contained in:
Jiga228
2026-06-23 21:59:34 +07:00
parent b2dee85b26
commit 93eb08fe9f
4 changed files with 239 additions and 193 deletions
@@ -15,6 +15,7 @@
#include "VkObjects/Instance.hpp"
#include "VkObjects/PhysicalDevice.hpp"
#include "VkObjects/Surface.hpp"
#include "VkObjects/Swapchain.hpp"
class Camera;
class GPU_GarbageCollector;
@@ -23,12 +24,6 @@ class GPU_GarbageCollector;
class UwURenderEngine : public RenderEngineBase
{
struct SwapchainSupportDetails
{
std::vector<VkSurfaceFormatKHR> formats;
std::vector<VkPresentModeKHR> present_modes;
VkSurfaceCapabilitiesKHR capabilities;
};
struct UniformBufferObject {
glm::mat4 model;
glm::mat4 view;
@@ -54,7 +49,9 @@ class UwURenderEngine : public RenderEngineBase
4, 5, 1, 1, 0, 4
};
static const std::vector<const char*> deviceExtensions;
const std::vector<const char*> UwURenderEngine::deviceExtensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME
};
// Counting frame from the beginning
unsigned int current_frame_ = 0;
@@ -69,11 +66,7 @@ class UwURenderEngine : public RenderEngineBase
VkObjects::Surface surface_;
VkObjects::PhysicalDevice physical_device_;
VkObjects::Device device_;
VkSwapchainKHR swapchain_ = VK_NULL_HANDLE;
std::vector<VkImage> swapchain_images_;
VkFormat swapchain_image_format_;
VkExtent2D swapchain_extent_;
std::vector<VkImageView> swapchain_image_views_;
VkObjects::Swapchain swapchain_;
VkRenderPass render_pass_ = VK_NULL_HANDLE;
VkDescriptorSetLayout ubo_layout_binding_ = VK_NULL_HANDLE;
VkDescriptorPool descriptor_pool_ = VK_NULL_HANDLE;
@@ -95,14 +88,9 @@ class UwURenderEngine : public RenderEngineBase
std::vector<VkSemaphore> image_available_semaphores_, render_finished_semaphores_;
std::vector<VkFence> in_flight_fences_;
SwapchainSupportDetails query_swapchain_details() const;
static VkSurfaceFormatKHR choose_surface_format(const std::vector<VkSurfaceFormatKHR>& surface_formats);
static VkPresentModeKHR choose_present_mode(const std::vector<VkPresentModeKHR>& present_modes, VkPresentModeKHR desired_present_mode);
VkShaderModule create_shader_module(const std::string& code) const;
void create_swapchain();
void create_image_views();
void create_render_pass();
void create_description_set_layout();
void create_uniform_buffers();
@@ -129,5 +117,5 @@ public:
std::shared_ptr<ModelManager> GetModelManager() const { return model_manager_; }
void SetActiveCamera(std::weak_ptr<Camera> camera);
void SetActiveCamera(const std::weak_ptr<Camera>& camera);
};