#pragma once

/*
	VulkanFramework
	by John Ryland
	Copyright (c) 2023
*/

////////////////////////////////////////////////////////////////////////////////////
//	Vulkan SwapChain

#include "VulkanDevice.h"
#include "VulkanSurface.h"

namespace Vulkan {

class SwapChain
{
public:
    SwapChain(Device& device, Surface& surface);
    virtual ~SwapChain();

    Device&               m_owner;
    Surface&              m_surface;
    VkPresentModeKHR      m_presentMode;

protected:
    virtual void Create();
    virtual void Destroy();
    virtual VkPresentModeKHR SelectPresentMode();
};

} // Vulkan namespace
