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

标签 java kotlin vulkan

vkEnumerateDeviceExtensionProperties() 调用时“返回”0。

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

我知道函数的实际返回值是错误代码。我说的是第三个 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++,但现在我对 Kotlin 非常满意。

最佳答案

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

关于java - (Kotlin Vulkan) vkEnumerateDeviceExtensionProperties 显示总共零个可用扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57921628/

相关文章:

java - Java AES/CBC 解密后的初始字节不正确

java - 如何在tomcat中处理三个JDBC连接池?

kotlin - 无法具体化传递给 forEach 的可挂起 block

kotlin - 不能在 Kotlin/Java 中使用 jooq DSL 做 where 子句

c++ - 可以将 Lua 转换为 spir-v 吗?

android - Android 上的 Vulkan 与 Visual Studio

java - 按需将 Neo4J 加载到内存中以进行繁重的计算

java - 如何将随机整数按数字从最小到最大排序?

gradle - java.lang.IllegalArgumentException带Kotlin的Corda转换存储库

c++ - vk创建交换链KHR : internal drawable creation failed