结束命令缓冲区记录操作
译者注:示例代码点击此处
怎么做...
1.获取处于记录状态(已开始记录操作)的命令缓冲区的句柄。将句柄处存在名为command_buffer的VkCommandBuffer类型变量中。
2.调用vkEndCommandBuffer( command_buffer ),参数提供command_buffer。
3.通过检查调用是否返回VK_SUCCESS,确保记录操作成功。
这个怎么运作...
命令被记录到vkBeginCommandBuffer()和vkEndCommandBuffer()函数调用之间的命令缓冲区中。在我们停止记录之前,无法提交命令缓冲区。换句话说,当我们完成记录命令缓冲区时,它处于可执行状态并且可以被提交。
为了使记录操作尽可能快并且对性能的影响尽可能小,记录的命令不会报告任何错误,如果出现任何问题,则由vkEndCommandBuffer()函数报告。所以当我们停止记录命令缓冲区时,应该确保记录成功,可以这样做:
VkResult result = vkEndCommandBuffer( command_buffer );
if( VK_SUCCESS != result ) {
std::cout << "Error occurred during command buffer recording." << std::endl;
return false;
}
return true;
如果在记录操作期间出现错误(vkEndCommandBuffer()函数返回的值不等于VK_SUCCESS),我们无法提交这样的命令缓冲区,需要充值它。