/// ============================================= // Aster: swapchain.h // Copyright (c) 2020-2024 Anish Bhobe // ============================================== #pragma once #include "global.h" #include "size.h" #include struct Surface; struct PhysicalDevice; struct Window; struct Device; struct Swapchain final { using FnResizeCallback = eastl::function; vk::SwapchainKHR m_Swapchain; vk::Extent2D m_Extent; vk::Format m_Format; eastl::fixed_vector m_Images; eastl::fixed_vector m_ImageViews; eastl::vector m_ResizeCallbacks; void Create(const Surface *surface, const Device *device, Size size, cstr name); void RegisterResizeCallback(FnResizeCallback &&callback); // Ctor/Dtor void Init(const Surface *surface, const Device *device, Size size, cstr name); void Destroy(const Device *device); };