![](/img/trans.png)
[英]Dealing with the catch 22 of object lifetimes in vulkan's device, surface, and swapchain in C++?
[英]C++ Vulkan swapchain image_index vs current_frame
我是 vulkan 的新手并遵循vulkan-tutorial 。 在关于交换链和飞行中的多个帧( frames_in_flight )的章节中,有一些我不明白的东西。
变量imageIndex
由函数vkAcquireNextImageKHR
设置
uint32_t imageIndex;
vkAcquireNextImageKHR(device, swapChain, UINT64_MAX, imageAvailableSemaphores[currentFrame], VK_NULL_HANDLE, &imageIndex);
并且变量currentFrame
每帧都会递增
currentFrame = (currentFrame + 1) % MAX_FRAMES_IN_FLIGHT;
imageIndex
变量仅用于VkPresentInfoKHR
结构的pImageIndices
字段和对std::vector<VkFramebuffer>
的索引。
所有其他向量,例如VkFence
或VkCommandBuffer
都使用currentFrame
变量进行索引。
imageIndex
和currentFrame
之间的差异到底是什么,为什么我需要跟踪 woth?
区别在于:
vkAcquireNextImageKHR::imageIndex
是“随机的”。 它可以以任何顺序返回任何数字。
currentFrame
以循环方式严格更改。 此外,最大计数可能与交换链图像计数不同。
您可以使用vkAcquireNextImageKHR::imageIndex
来处理与特定交换链图像相关的内容。 您可以将currentFrame
用于与帧序列相关的事物(例如奇数帧与偶数帧)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.