如果我没有 VK_KHR_swapchain 扩展,如何运行 Vulkan API?

ula*_*ade 2 c++ rendering vulkan

我在 Windows 10 上,我的 GPU 是 GTX 880M。当我使用 vkEnumerateInstanceExtensionProperties 来获取支持的扩展时,我得到的只是:

"VK_KHR_surface"
"VK_KHR_win32_surface"
"VK_EXT_debug_report"

但是,我没有“VK_KHR_swapchain”,如果我尝试在创建实例时启用“VK_KHR_swapchain”,它就会挂起。

但是,如果没有“VK_KHR_swapchain”,我将无法创建交换链,验证层的调试回调将被调用此消息:

"试图调用 vkCreateSwapchainKHR() 但其所需的扩展 VK_KHR_swapchain 尚未启用\n"

我可以在启用 Vulkan 的情况下运行游戏,也可以从 Vulkan SDK 运行 Cube 演示,所以必须有某种方法可以创建交换链和渲染,对吗?

或者当 GPU 没有该扩展时,是否必须采用某种 hack 方法?

Sas*_*ems 7

VK_KHR_swapchain设备扩展,而不是实例扩展。因此,您需要在设备创建级别添加它。