Vulkan编程指南翻译 第五章 展现 第6节 清扫工作
2017-03-03 16:05
253 查看
5.6 清扫工作
不管你在应用程序中用什么方法来呈现,你都需要正确的做清扫工作。第一,你应该销毁正在呈现的交换链。需要
调用vkDestroySwapchainKHR()函数,其原型如下:
void vkDestroySwapchainKHR(
VkDevice device,
VkSwapchainKHR
swapchain,
const VkAllocationCallbacks*
pAllocator);
拥有该交换链的设备通过device传递,需要被销毁的交换链通过swapchain传递。如果之前用
自定义的内存分配器来创建交换链,那么就需要一个配对的内存分配器通过pAllocator传入。
当交换链被销毁,所有与其关联的可显示的图像都被销毁了。因此,你需要保证没有将向这些画幕写入
的待命的任务,也没有从画幕读取数据的待命操作。最简单的方式是调用
vkDeviceWaitIdle()。通常是不被推荐的,因为销毁交换链通常并不会在应用程序性能苛刻的部分出现,
所以,在这种情况下,简单的就是最好的。
当使用vkAcquireNextImageKHR()从交换链中取得图像时,或者使用vkQueuePresentKHR()呈现
图像时,信号量头传递到这些函数中去激发或等待。需要注意,信号量需要存活的时间需要比交换链在
被销毁前完成任何激发操作所需时间都要长。为了保证这条,最好在销毁任何信号量之前销毁可能使用这些
信号量的交换链。
总结
在本章,你学习了如何包图像放到显示器的Vulkan操作。我们讲解了各种窗口系统的展现操作,你如何
确定图像该往哪个显示器渲染的机制,如何遍历和控制连接到系统的显示器设备。我们简单的介绍了呈现
相关的同步,将在后面章节继续深入同步原语。我们也讨论了配置显示器同步的方法。依本章的
信息,你应对如何把图像展示给用户有了相当的理解。
不管你在应用程序中用什么方法来呈现,你都需要正确的做清扫工作。第一,你应该销毁正在呈现的交换链。需要
调用vkDestroySwapchainKHR()函数,其原型如下:
void vkDestroySwapchainKHR(
VkDevice device,
VkSwapchainKHR
swapchain,
const VkAllocationCallbacks*
pAllocator);
拥有该交换链的设备通过device传递,需要被销毁的交换链通过swapchain传递。如果之前用
自定义的内存分配器来创建交换链,那么就需要一个配对的内存分配器通过pAllocator传入。
当交换链被销毁,所有与其关联的可显示的图像都被销毁了。因此,你需要保证没有将向这些画幕写入
的待命的任务,也没有从画幕读取数据的待命操作。最简单的方式是调用
vkDeviceWaitIdle()。通常是不被推荐的,因为销毁交换链通常并不会在应用程序性能苛刻的部分出现,
所以,在这种情况下,简单的就是最好的。
当使用vkAcquireNextImageKHR()从交换链中取得图像时,或者使用vkQueuePresentKHR()呈现
图像时,信号量头传递到这些函数中去激发或等待。需要注意,信号量需要存活的时间需要比交换链在
被销毁前完成任何激发操作所需时间都要长。为了保证这条,最好在销毁任何信号量之前销毁可能使用这些
信号量的交换链。
总结
在本章,你学习了如何包图像放到显示器的Vulkan操作。我们讲解了各种窗口系统的展现操作,你如何
确定图像该往哪个显示器渲染的机制,如何遍历和控制连接到系统的显示器设备。我们简单的介绍了呈现
相关的同步,将在后面章节继续深入同步原语。我们也讨论了配置显示器同步的方法。依本章的
信息,你应对如何把图像展示给用户有了相当的理解。
相关文章推荐
- Vulkan编程指南翻译 第五章 展现 第3节 交换链
- Vulkan编程指南翻译 第五章 展现 第3节 全屏画幕
- Vulkan编程指南翻译 第五章 展现 第1节 拓展
- Vulkan编程指南翻译 第五章 展现 第2节 展现表面
- Vulkan编程指南翻译 第五章 展现 第5节 开始呈现
- Vulkan编程指南翻译 第四章 队列和命令 第6节 展开图像
- Vulkan编程指南翻译 第六章 着色器和管线 第4节 执行工作
- Vulkan编程指南翻译 第四章 队列和命令 第5节 复制压缩图像数据
- Vulkan编程指南翻译 第三章 队列和命令 第1节 设备队列
- Vulkan编程指南翻译 第四章 队列和命令 第1节 管理资源的状态
- Vulkan编程指南翻译 第七章 图形管线 第5节 动态状态
- Vulkan编程指南翻译 第六章 着色器和管线 第2节 SPIR-V 概述
- Vulkan编程指南翻译 第六章 着色器和管线 第5节 第6段 图像采样
- Vulkan编程指南翻译 第三章 队列和命令 第2节 创建命令缓冲区
- Vulkan编程指南翻译 第七章 图形管线 第4节 创建简单的图形管线
- Vulkan编程指南翻译 第八章 图形管线 第1节 准备绘制
- Vulkan编程指南翻译 第六章 着色器和管线 第5节 在着色器中访问资源
- Vulkan编程指南翻译 第四章 队列和命令 第3节 清空和填充图像
- Vulkan编程指南翻译 第七章 图形管线 第1节 逻辑图形管线
- Vulkan编程指南翻译 第二章 第二节 资源