#pragma once

#include <vector>

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#include "VulkanDebugManager.h"

class VulkanInstanceManager
{
public:
	VulkanInstanceManager();
	~VulkanInstanceManager();

	void Cleanup();

	void	   CreateInstance(VulkanDebugManager* DebugManager = nullptr);
	VkInstance GetInstance() const { return Instance; }

private:
	VkInstance Instance = VK_NULL_HANDLE;

	std::vector<const char*> GetRequiredExtensions(bool bEnableValidationLayers);

	bool CheckValidationLayerSupport();
};
