我怎么知道演示已经完成,因为在 VkPresentInfoKHR 和 vkQueuePresentKHR 中没有信号量和栅栏?
How can I know that presentation is completed, since there is no semaphores and fences in VkPresentInfoKHR and vkQueuePresentKHR?
我可以在从交换链获取图像和渲染之间、渲染和呈现之间进行同步,但我是否需要在下一次循环迭代之前等待呈现完成?
如果是,使用哪种同步方法?
呈现图像的行为是一个异步操作,虽然与队列相关,但不会完成因为队列执行。而且它也不会't/shouldn 阻止该队列,因为它可能涉及 CPU 操作。
您永远不应该等待演示结束。您想要的是 acquire 完成。这就是 vkAcquireNextImageKHR
需要使用 semaphore/fence 的原因。您不能执行操作返回图像的命令,除非这些命令与用于获取图像的 semaphore/fence 同步。
我想说这种问题是无效的。
"presentation is completed" 是什么意思?演示 从未 完成。该图像会无限期并重复显示,直到您提供新图像。
检查演示文稿是否完成的唯一方法是调用 vkAcquireNextImageKHR
。这告诉您演示引擎仅使用 图像完成 returns。
但是人们问这个通常是指如何获取 VSync 信息。它目前是不平凡的。并进一步研究如何使其变得更好:Vulkan-Docs#370
我可以在从交换链获取图像和渲染之间、渲染和呈现之间进行同步,但我是否需要在下一次循环迭代之前等待呈现完成?
如果是,使用哪种同步方法?
呈现图像的行为是一个异步操作,虽然与队列相关,但不会完成因为队列执行。而且它也不会't/shouldn 阻止该队列,因为它可能涉及 CPU 操作。
您永远不应该等待演示结束。您想要的是 acquire 完成。这就是 vkAcquireNextImageKHR
需要使用 semaphore/fence 的原因。您不能执行操作返回图像的命令,除非这些命令与用于获取图像的 semaphore/fence 同步。
我想说这种问题是无效的。 "presentation is completed" 是什么意思?演示 从未 完成。该图像会无限期并重复显示,直到您提供新图像。
检查演示文稿是否完成的唯一方法是调用 vkAcquireNextImageKHR
。这告诉您演示引擎仅使用 图像完成 returns。
但是人们问这个通常是指如何获取 VSync 信息。它目前是不平凡的。并进一步研究如何使其变得更好:Vulkan-Docs#370