0

我在做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)
4

1 回答 1

0

问题解决了。我查看了这个答案,发现在尝试检查可用的表面格式和功能之前,我忘记了初始化我的 xcb 窗口。

于 2017-06-26T22:08:24.403 回答