销毁交换链
译者注:示例代码点击此处
当我们使用完交换链,可能我们不想再呈现图像,或者因为我们要关闭应用程序,所以要销毁它。我们需要在销毁交换链创建时使用的表面之前销毁它。
怎么做...
1.获取逻辑设备的句柄并将其储存在名为logical_device的VkDevice类型变量中。
2.获取需要销毁的交换链对象的句柄,将其储存在名为swapchain的VkSwapchainKHR类型变量中。
3.调用vkDestroySwapchainKHR( logical_device, swapchain, nullptr )第一个参数提供逻辑设备句柄,第二个参数提供要销毁的交换链句柄,最后一个为nullptr。
4.出于安全原因,请为swapchain变量分配VK_NULL_HANDLE值。
这个怎么运作...
要销毁交换链,我们可以准备类似下面示例的代码:
if( swapchain ) {
vkDestroySwapchainKHR( logical_device,
swapchain = VK_NULL_HANDLE;
}
首先检查是否真的创建了交换链(如果它的句柄不是空的)。接下来调用vkDestroySwapchainKHR()函数,然后我们将VK_NULL_HANDLE值赋给swapchain变量,以确保不会尝试两次删除同一个对象。