我有一个想法,不确定是否可行:
- 在程序开始时创建
VkCommandPool
并从中分配一个单独的VkCommandBuffer
。 - 在渲染循环中,记录命令到
VkCommandBuffer
(隐式重置它),引用当前VkSwapchain
的适当VkImageView
的VkFramebuffer
。 - 提交命令缓冲区
我不确定在刚刚提交执行的命令缓冲区上立即重置并重新记录它是否有效。这是定义良好的行为吗?它允许多帧同时进行,还是有缺陷的?
一方面,似乎应该是有效的,因为命令被提交后已经被复制到了GPU上,但另一方面,看到标志VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
,默认情况下似乎不能提交正在“挂起”状态的命令缓冲区。
我认为这个问题可以概括为多个命令缓冲区,以及它们是否应该每个都有与vkSwapchain
中的vkImage
数量相同的副本,或者一个副本就足够了。