Vulkan重置命令缓冲区

如果命令缓冲区是先前记录的或者在记录命令的过程中出现了错误,那么再次使用命令缓冲区记录命令前必须重置它。可以通过隐式方式做到这一点:启动另一个记录操作。但也可以通过显式方式做到这一点。

具体处理过程

(1)获取通过VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT标志创建的命令池分配的命令缓冲区的句柄,将该句柄存储在一个VkCommand Buffer类型的变量中,将该变量命名为command_buffer。
(2)创建一个VkCommandBufferResetFlags类型的变量,将其命名为release_resources。如果想要释放该命令缓冲区占用的内存,则将这些内存还给命令池,在release_resources变量中存储VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT;否则,就在该变量中存储0。
(3)调用vkResetCommandBuffer(command_buffer,release_resources)函数。将第一个参数设置为命令缓冲区的句柄,将第二个参数设置为release_resources变量。
(4)通过查明该函数调用操作的返回值等于VK_SUCCESS,确认该函数调用操作成功完成。

具体运行情况

可以通过重置整个命令池,批量重置命令缓冲区。如果命令池是通过VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT标志创建的,则也可以重置该命令池分配的单个命令缓冲区。
通过启动记录操作,可以使用隐式方式重置命令缓冲区。通过调用vkResetCommand Buffer()函数,可以使用显式方式重置命令缓冲区。使用显式方式重置让我们能够通过命令池控制命令缓冲区占用的内存。在执行显式重置操作的过程中,我们可以决定是否将内存还给命令池,是否允许命令缓冲区保留这些内存并在执行下次记录操作时使用这部分内存。

使用下面的代码可以通过显式方式重置单个命令缓冲区。
Vulkan重置命令缓冲区

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战