#pragma once #include "vulkan/basalt_window.h" namespace basalt { class Context { public: Context(const Context& src) = delete; Context& operator=(const Context& src) = delete; Context(Context&& src) noexcept; Context& operator=(Context&& src) noexcept; Context(const char* app_name, const basalt::darray& required_layers, const basalt::darray& required_extensions, uint32_t app_version=VK_MAKE_API_VERSION(1, 1, 0, 0), uint32_t vulkan_version = VK_MAKE_API_VERSION(0, 1, 2, 0)); ~Context(); operator VkInstance(void) const noexcept; VkInstance inst = VK_NULL_HANDLE; VkAllocationCallbacks* vk_alloc = VK_NULL_HANDLE; VkDebugUtilsMessengerEXT dbg_msger = VK_NULL_HANDLE; const char** pp_enabled_layers = nullptr; u32 num_enabled_layers = 0; bool should_free = true; bool using_validation_layers = false; }; }