#pragma once #include "vk_utils.h" #include class Resource_Manager { public: void initialize(VkDevice device); void release_resources(); VkSemaphore create_semaphore(); VkCommandPool create_command_pool(const VkCommandPoolCreateInfo& desc); VkDescriptorPool create_descriptor_pool(const VkDescriptorPoolCreateInfo& desc); VkBuffer create_buffer(const VkBufferCreateInfo& desc); VkImage create_image(const VkImageCreateInfo& desc); VkImageView create_image_view(const VkImageViewCreateInfo& desc); VkSampler create_sampler(const VkSamplerCreateInfo& desc); VkRenderPass create_render_pass(const VkRenderPassCreateInfo& desc); VkFramebuffer create_framebuffer(const VkFramebufferCreateInfo& desc); VkDescriptorSetLayout create_descriptor_set_layout(const VkDescriptorSetLayoutCreateInfo& desc); VkPipelineLayout create_pipeline_layout(const VkPipelineLayoutCreateInfo& desc); VkPipeline create_graphics_pipeline(const VkGraphicsPipelineCreateInfo& desc); private: VkDevice device = VK_NULL_HANDLE; std::vector semaphores; std::vector command_pools; std::vector descriptor_pools; std::vector buffers; std::vector images; std::vector image_views; std::vector samplers; std::vector descriptor_set_layouts; std::vector render_passes; std::vector framebuffers; std::vector pipeline_layouts; std::vector graphics_pipelines; }; Resource_Manager* get_resource_manager();