Vulkan编程指南翻译 第五章 展现 第6节 清扫工作

99 篇文章 54 订阅
81 篇文章 2 订阅
5.6 清扫工作


不管你在应用程序中用什么方法来呈现,你都需要正确的做清扫工作。第一,你应该销毁正在呈现的交换链。需要
调用vkDestroySwapchainKHR()函数,其原型如下:
void vkDestroySwapchainKHR(
VkDevice device,
VkSwapchainKHR swapchain,
const VkAllocationCallbacks* pAllocator);

拥有该交换链的设备通过device传递,需要被销毁的交换链通过swapchain传递。如果之前用
自定义的内存分配器来创建交换链,那么就需要一个配对的内存分配器通过pAllocator传入。
当交换链被销毁,所有与其关联的可显示的图像都被销毁了。因此,你需要保证没有将向这些画幕写入
的待命的任务,也没有从画幕读取数据的待命操作。最简单的方式是调用
vkDeviceWaitIdle()。通常是不被推荐的,因为销毁交换链通常并不会在应用程序性能苛刻的部分出现,
所以,在这种情况下,简单的就是最好的。
当使用vkAcquireNextImageKHR()从交换链中取得图像时,或者使用vkQueuePresentKHR()呈现
图像时,信号量头传递到这些函数中去激发或等待。需要注意,信号量需要存活的时间需要比交换链在
被销毁前完成任何激发操作所需时间都要长。为了保证这条,最好在销毁任何信号量之前销毁可能使用这些
信号量的交换链。






总结
在本章,你学习了如何包图像放到显示器的Vulkan操作。我们讲解了各种窗口系统的展现操作,你如何
确定图像该往哪个显示器渲染的机制,如何遍历和控制连接到系统的显示器设备。我们简单的介绍了呈现
相关的同步,将在后面章节继续深入同步原语。我们也讨论了配置显示器同步的方法。依本章的
信息,你应对如何把图像展示给用户有了相当的理解。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值