ppEnabledLayerNames.flip();
VkInstanceCreateInfo pCreateInfo = VkInstanceCreateInfo.calloc()
.sType(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) // <- identifies what kind of struct this is (this is useful for extending the struct type later)
.pNext(NULL) // <- must always be NULL until any next Vulkan version tells otherwise
.pApplicationInfo(appInfo) // <- the application info we created above
<BUG>.enabledExtensionCount(ppEnabledExtensionNames.remaining()) // <- how many extensions do we want to use?</BUG>
.ppEnabledExtensionNames(ppEnabledExtensionNames) // <- and the extension names themselves
<BUG>.enabledLayerCount(ppEnabledLayerNames.remaining()) // <- how many validation layers do we want to use?</BUG>
.ppEnabledLayerNames(ppEnabledLayerNames); // <- and the layer names themselves
PointerBuffer pInstance = memAllocPointer(1); // <- create a PointerBuffer which will hold the handle to the created VkInstance

ppEnabledLayerNames.flip();
VkInstanceCreateInfo pCreateInfo = VkInstanceCreateInfo.calloc()
.sType(VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) // <- identifies what kind of struct this is (this is useful for extending the struct type later)
.pNext(NULL) // <- must always be NULL until any next Vulkan version tells otherwise
.pApplicationInfo(appInfo) // <- the application info we created above
.ppEnabledExtensionNames(ppEnabledExtensionNames) // <- and the extension names themselves
.ppEnabledLayerNames(ppEnabledLayerNames); // <- and the layer names themselves
PointerBuffer pInstance = memAllocPointer(1); // <- create a PointerBuffer which will hold the handle to the created VkInstance
