#pragma once #include #include #include namespace engine { struct Swapchain { VkSwapchainKHR swapchain = VK_NULL_HANDLE; VkDevice device = VK_NULL_HANDLE; // the associated device VkSurfaceFormatKHR surfaceFormat{}; VkSurfaceCapabilitiesKHR surfaceCapabilities{}; VkPresentModeKHR presentMode{}; VkExtent2D extent{}; VkRenderPass renderpass = VK_NULL_HANDLE; std::vector> images{}; }; struct SwapchainInfo { VkDevice device; VkPhysicalDevice physicalDevice; VkSurfaceKHR surface; SDL_Window* window; bool vsync; bool waitForPresent; }; void createSwapchain(Swapchain* sc, const SwapchainInfo& info); void destroySwapchain(const Swapchain& sc); }