diff --git a/Core/Core/CoreInstance.cpp b/Core/Core/CoreInstance.cpp index e6fb345..fdb8fe0 100644 --- a/Core/Core/CoreInstance.cpp +++ b/Core/Core/CoreInstance.cpp @@ -63,14 +63,18 @@ CoreInstance::CoreInstance() window_ = glfwCreateWindow(800, 600, main_config_.game_name.c_str(), nullptr, nullptr); if (window_ == nullptr) { - glfwTerminate(); - throw std::runtime_error("Fail create window"); + std::cout << "[!] Init render engine: Fail create window\n"; + return; + } + try { + render_engine_ = new RenderEngine(*this, window_); + } catch (const std::exception& e) + { + std::cout << "[!] Init render engine: " << e.what() << '\n'; + throw; } - render_engine_ = new RenderEngine(*this, window_); game_ = GameFactory(*this); - if (game_ == nullptr) - throw std::runtime_error("Fail create game instance!"); } CoreInstance::~CoreInstance() @@ -81,6 +85,9 @@ CoreInstance::~CoreInstance() delete render_engine_; delete game_; + + glfwDestroyWindow(window_); + glfwTerminate(); } void CoreInstance::start() diff --git a/Core/Core/RenderEngine.cpp b/Core/Core/RenderEngine.cpp index d4c4d5c..ccc8ec1 100644 --- a/Core/Core/RenderEngine.cpp +++ b/Core/Core/RenderEngine.cpp @@ -972,10 +972,6 @@ RenderEngine::~RenderEngine() if (instance_ != VK_NULL_HANDLE) vkDestroyInstance(instance_, nullptr); - - if (window_ != nullptr) - glfwDestroyWindow(window_); - glfwTerminate(); } void RenderEngine::start()