#pragma once #include #include "copium/core/DebugMessenger.h" namespace Copium { class Instance final { CP_DELETE_COPY_AND_MOVE_CTOR(Instance); private: VkInstance instance; std::unique_ptr debugMessenger; // TODO: Move to SwapChain? uint32_t graphicsQueueIndex; uint32_t presentQueueIndex; VkQueue graphicsQueue; VkQueue presentQueue; // TODO end public: Instance(const std::string& applicationName); ~Instance(); operator VkInstance() const; private: void InitializeInstance(const std::string& applicationName); void InitializeDebugMessenger(); std::vector GetRequiredExtensions(); bool CheckLayerSupport(const std::vector& layers); }; }