我的印象是你可以在 NULL 句柄上调用 Destroy / Free,这将是一个空操作。
2.5.1 有效使用
将 VK_NULL_HANDLE 传递给任何 vkDestroy* 或 vkFree* 命令是有效的,它们会默默地忽略这些值。
但是如果你使用vkGetInstanceProcAddr和vkGetDeviceProcAddr来获取函数指针会发生什么呢?我正在执行以下操作:
Device::Device(Device&& other) :
handle(other.handle),
functions(other.functions)
{
other.handle = VK_NULL_HANDLE;
}
当然,当为原始设备调用析构函数时,它会将空句柄传递给特定于设备的vkDestroyDevice。
目前,这给了我一个读取访问冲突,我不确定这是 AMD 的错、LunarG 的错还是我的错。