(Kotlin Vulkan) vkEnumerateDeviceExtensionProperties 显示总共零个可用扩展

(Kotlin Vulkan) vkEnumerateDeviceExtensionProperties shows a total of zero available extensions

vkEnumerateDeviceExtensionProperties() "returns" 调用时0.

我正在关注 Khronos Group 的 Vulkan 教程:https://vulkan-tutorial.com/

我知道函数的实际return值是错误代码。我说的是第 3 个 parameter,在本例中是要写入的 IntBufferIntBuffer 总是返回 0。此外,到目前为止我所做的一切都有效,包括实例创建、验证层、表面创建和创建逻辑设备(实际上在这部分代码之后,但它有效在我实现这个之前)。 这是代码:

private fun checkDeviceExtensionSupport(device: VkPhysicalDevice): Boolean {

    val pExtensionCount = memAllocInt(1)
    vkEnumerateDeviceExtensionProperties(device,null.toString(),pExtensionCount,null)

    val availableExtensions = VkExtensionProperties.mallocStack(pExtensionCount.get(0))
    vkEnumerateDeviceExtensionProperties(device,null.toString(),pExtensionCount,availableExtensions)

    println("ExtensionCount: ${pExtensionCount.get()}") //this is 0
    println("Available extensions: ${availableExtensions.get(0)}") //which results in an out of bounds here

    memFree(pExtensionCount)
    availableExtensions.free()
    return true
}

我注意到其他人根本就没有调用这个方法。有必要吗?我相当确定您稍后必须在逻辑设备创建信息中指定设备扩展名。难道只是我的物理设备不支持任何扩展吗?不过我觉得有点奇怪。

是的,我知道在编程引擎和游戏方面,Kotlin 可能不是最佳选择,如果我卡在这里,我愿意回到 C++,但现在我真的很高兴科特林

好吧,原来我拿错了设备。我不知道是哪一个,但现在的方法 returns 78 哪个好(我猜?)。遍历可能的物理设备会有所帮助!