diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index 35e7fcf3684d9d7b67ecfe0c991ab9348ae162d9..feb2153f5b5274a168fb49bd7087a8b4092dcc47 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -11,8 +11,6 @@ int main(int argc, const char** argv) {
 	uint32_t windowWidth = 800;
 	uint32_t windowHeight = 600;
 
-	glfwInit();
-
 	vkcv::Core core = vkcv::Core::create(
 		applicationName,
 		VK_MAKE_VERSION(0, 0, 1),
diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp
index f48fad1a9022cbf99f6452c319d629060befbd98..826ef66f57d1b413637307e4c5e3a5154a36d2be 100644
--- a/src/vkcv/Context.cpp
+++ b/src/vkcv/Context.cpp
@@ -176,14 +176,14 @@ namespace vkcv
 	}
 	
 	std::vector<const char*> getRequiredExtensions() {
+		glfwInit();
 		uint32_t glfwExtensionCount = 0;
 		const char** glfwExtensions = glfwGetRequiredInstanceExtensions(&glfwExtensionCount);
 		std::vector<const char*> extensions(glfwExtensions, glfwExtensions + glfwExtensionCount);
-
+		glfwTerminate();
 #ifndef NDEBUG
 		extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
 #endif
-		
 		return extensions;
 	}