#pragma once #include #include namespace lt::renderer::vk { class Swapchain { public: Swapchain(const class Device &device, const class Surface &surface); ~Swapchain(); Swapchain(Swapchain &&) = default; Swapchain(const Swapchain &) = delete; auto operator=(Swapchain &&) -> Swapchain & = default; auto operator=(const Swapchain &) const -> Swapchain & = delete; private: [[nodiscard]] auto get_optimal_image_count( VkSurfaceCapabilitiesKHR capabilities, uint32_t desired_image_count ) const -> uint32_t; memory::NullOnMove m_device; memory::NullOnMove m_swapchain = VK_NULL_HANDLE; std::vector m_swapchain_images; std::vector m_swapchain_image_views; }; } // namespace lt::renderer::vk