Initialization
This section deals with initialization of all the systems needed, including:
- Initializing GLFW and creating a Window
- Creating a Vulkan Instance
- Creating a Vulkan Surface
- Selecting a Vulkan Physical Device
- Creating a Vulkan logical Device
- Creating a Vulkan Swapchain
If any step here fails, it is a fatal error as we can't do anything meaningful beyond that point.