我在做ogldev 的 vulkan 教程的过程中,我遇到了这个问题,特别是vkGetPhysicalDeviceSurfaceFormatsKHR函数。文档说如果 pSurfaceFormats 参数为 NULL,它将告诉 pSurfaceFormatCount 指针中有多少表面格式实际可用。
这就是我的问题所在。它根本没有触及整数指针。
uint NumFormats = 0;
res = vkGetPhysicalDeviceSurfaceFormatsKHR(PhysDev, Surface, &NumFormats, NULL);
if(res != VK_SUCCESS) {
LIFE_ERROR("vkGetPhysicalDeviceSurfaceFormatsKHR error: %d\n", res);
assert(0);
}
assert(NumFormats > 0);
(assert(NumFormats > 0)失败)我正在使用 nvidia 驱动程序运行 Linux,并且我很确定 vulkan API 可以正确地看到我的 gpu,因为我的输出是这样的:
Found 6 extensions
Instance extension 0 - VK_KHR_surface
Instance extension 1 - VK_KHR_xcb_surface
Instance extension 2 - VK_KHR_xlib_surface
Instance extension 3 - VK_KHR_wayland_surface
Instance extension 4 - VK_EXT_debug_report
Instance extension 5 - VK_NV_external_memory_capabilities
Surface created
Num physical devices 1
Device name: GTX 980 Ti
API version: 1.0.24
Num of family queues: 2
....(assert failes)