gpt4 book ai didi

swift - API 返回无效指针的问题

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:23 29 4
gpt4 key购买 nike

我一直在为 Vulkan 编写一个针对 MacOS 的包装器库。一切顺利,直到我遇到这个障碍。有一个对 SDL_Vulkan_CreateSurface 的调用,它应该返回一个指向表面 VkSurfaceKHR 的指针。但是,返回的指针不是内存地址,而是数字 1。起初我认为这可能是 SDL 的一个错误,但后来我注意到对另一个 Vulkan API 的另一个调用返回了 2。我现在没有选择了,我希望这是我可以解决的问题。这是输出:

1== CREATE VULKAN INSTANCEEnabling extensions:VK_KHR_surfaceVK_MVK_macos_surface===2== CREATE PHYSICAL DEVICECreated GPU (Physical device): 0x00007fe23b81e3803== CREATE SURFACE (Metal->MoltenVK)Created Surface: 0x00000000000000014== CREATE DEVICEChosen queue Family is 0Created Device: 0x00007fe23c017a105== CREATE COMMAND POOLCreated Command Pool: 0x00000000000000026== CREATE COMMAND BUFFERCreated Command Buffer: 0x00007fe23a4d2bd07== CREATE SWAPCHAINSegmentation fault: 11   

The responsible function is this:

func createVulkanSurface() throws -> Surface {
var surface = VkSurfaceKHR(bitPattern: 0)

if SDL_Vulkan_CreateSurface(window, self.instance!.pointer, &surface) != SDL_TRUE {
throw lastSDLError()
}

return Surface(instance: self.instance!, surface: surface!)
}

代码在这里:https://github.com/alexanderuv/vulkanSwift

上面的具体代码在这里:https://github.com/alexanderuv/vulkanSwift/blob/master/Sources/SwiftSDL2/Window.swift#L198

任何帮助将不胜感激!

最佳答案

VkSurfaceKHR 不是指针;这是一个不可分派(dispatch)的句柄。来自标准:

Non-dispatchable handle types are a 64-bit integer type whose meaning is implementation- dependent, and may encode object information directly in the handle rather than acting as a reference to an underlying object.

因此 1 或 2 很可能是不可分派(dispatch)句柄的有效值。如果您遇到段错误,那不是因为表面句柄无效。

关于swift - API 返回无效指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54068896/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com