#pragma once #include #include "glfw/glfw_window.h" namespace veng { class Graphics final { public: Graphics(gsl::not_null window); ~Graphics(); void InitializeVulkan(); void CreateInstance(); void SetupDebugMessenger(); std::vector GetRequiredInstanceExtentions(); static gsl::span GetSuggestedInstanceExtentions(); static std::vector GetSupprotedInstanceExtensions(); static bool AreAllExtensionsSupported(gsl::span extensions); static std::vector GetSupprotedValidationLayers(); static bool AreAllLayersSupported(gsl::span extensions); VkInstance instance_ = nullptr; VkDebugUtilsMessengerEXT debug_messenger_; gsl::not_null window_; bool validation_enabled_ = false; }; } // namespace veng