Vulkan Cookbook 第三章 10 重置围栏

本文详细介绍了如何在Vulkan图形API中重置围栏。围栏用于同步GPU操作,但与自动重置的信号量不同,围栏需要手动重置。文章提供了具体的步骤和示例代码,包括创建逻辑设备、存储围栏句柄、调用vkResetFences函数以及检查返回值确保操作成功。

重置围栏

译者注:示例代码点击此处

信号量会自动重置。但是当围栏变成信号时,应用程序有责任将围栏重置为无信号状态。

怎么做...

1.将创建的逻辑设备句柄储存在名为logical_device的VkDevice类型变量中。
2.创建名为fences的向量变量。它应包含VkFence类型的元素。在变量中存储应重置的所有围栏的句柄。
3.调用vkResetFences( logical_device, static_cast<uint32_t>(fences.size()), &fences[0] )。并提供logical_device变量、fences向量中的元素数量以及指向第一个元素的指针。
4.通过检查调用的返回值是否等于VK_SUCCESS确保成功。

这个怎么运作...

当想知道提交的命令合适完成时,我们使用围栏。但我们无法提供已经发出信号的围栏,必须首先重置它,这意味着我们将其状态从信号更改为无信号。围栏由应用程序显示重置,而不像信号量那样自动重置。重置围栏是这样完成的:

if( fences.size() > 0 ) {
  VkResult result = vkResetFences( logical_device, static_cast<uint32_t>(fences.size()), &fences[0] ); 
  if( VK_SUCCESS != result ) {
    std::cout << "Error occurred when tried to reset fences." << std::endl;
    return false; 
  }
  return VK_SUCCESS == result; 
}
return false;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值