#pragma once #include #include class CoreInstance; namespace VkObjects { class Instance { VkInstance instance_ = nullptr; static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData ); #ifdef _DEBUG VkResult enable_layer_validation(const VkDebugUtilsMessengerCreateInfoEXT* create_info); VkDebugUtilsMessengerEXT debug_messenger_; #endif std::vector Instance::get_required_extensions(); public: explicit Instance(CoreInstance& core); ~Instance(); inline VkInstance get_native() const { return instance_; } }; }