等待所有提交的命令完成
译者注:示例代码点击此处
有时我们希望等到提交给所有逻辑队列的所有工作都完成。这种类型的等待通常在我们关闭应用程序之前完成。并且我们想要销毁所有创建或分配的资源。
怎么做...
1.获取已创建逻辑设备的句柄,并将其存储在名为logical_device的VkDevice类型的变量中。
2.调用vkDeviceWaitIdle( logical_device ),为其提供逻辑设备句柄。
3.通过将返回值与VK_SUCCESS进行比较来检查是否没有错误。
这个怎么运作...
vkDeviceWaitIdle()函数使我们的应用程序等到逻辑设备不在忙。这类似于等待为给定设备请求的所有队列,直到完成提交给所有队列的命令。
上述函数通常在退出应用程序之前调用。当我们想要销毁资源时,必须确保它们不在被逻辑设备使用。此功能可确保可以安全地执行此类销毁。
等待提交给设备的所有命令是这样执行的:
VkResult result = vkDeviceWaitIdle( logical_device );
if( VK_SUCCESS != result ) {
std::cout << "Waiting on a device failed." << std::endl;
return false;
}
return true;