project-aster/aster/swapchain.h

41 lines
893 B
C++

/// =============================================
// Aster: swapchain.h
// Copyright (c) 2020-2024 Anish Bhobe
// ==============================================
#pragma once
#include "global.h"
#include <EASTL/fixed_vector.h>
struct PhysicalDevice;
struct Window;
struct Device;
struct Swapchain final
{
const Device *m_Device;
vk::SwapchainKHR m_Swapchain;
NameString m_Name;
vk::Extent2D m_Extent;
vk::Format m_Format;
eastl::fixed_vector<vk::Image, 4> m_Images;
eastl::fixed_vector<vk::ImageView, 4> m_ImageViews;
void Create(const Window *window);
// Ctor/Dtor
Swapchain(const Window *window, const Device *device, NameString &&name);
~Swapchain();
// Move
Swapchain(Swapchain &&other) noexcept;
Swapchain &operator=(Swapchain &&other) noexcept;
DISALLOW_COPY_AND_ASSIGN(Swapchain);
private:
void Cleanup();
};