【问题标题】:Can the number of images in the swapchain change when it is recreated?重新创建时交换链中的图像数量是否会改变?
【发布时间】:2019-12-05 07:27:55
【问题描述】:

在关注https://vulkan-tutorial.com 的 vulkan 教程时,我遇到了问题

在重新创建交换链时应该销毁描述符池,因为它取决于图像的数量...

在关于 UBO 的章节中。重新创建时交换链中的图像数量是否可能发生变化?

让我更加困惑的是,本教程为每个图像使用了一个栅栏,但是在重新创建交换链时不会重新创建栅栏列表!

【问题讨论】:

  • 为了消除混淆,本教程为每一帧使用了一个栅栏,将最大帧数设置为 2。此值必须小于或等于交换中的图像数链。这就是重新创建交换链时不需要重新创建栅栏的原因。

标签: vulkan


【解决方案1】:

如果报告的计数可以更改,这是一个未解决的问题:https://github.com/KhronosGroup/Vulkan-Docs/issues/388

我认为这在正常情况下不会发生在野外。尽管规范中未解决意味着某些驱动程序制造商可能会声称它是有效的。可能最好在这里进行防御性编程。

技术上允许更改的一件事是vkCreateSwapchain 创建的计数:

minImageCount 是应用程序需要的可呈现图像的最小数量。该实现将创建具有至少那么多图像的交换链,否则将无法创建交换链。

教程制作者也只是人。我相信每课结束时都有讨论,您可以联系作者并请他澄清他的代码的含义。

【讨论】:

  • 即使表面能力最小/最大图像计数不变,并且您创建具有相同 minImageCount 值的交换链,因为您引用交换链中图像数量的部分可以仍然改变。所以本教程是正确的,if 描述符池取决于交换链大小(这不是我的做法,但不是太不合理),那么应该重新创建它 如果交换链大小实际上不同。
  • @JesseHall 我的意思是,直接联系作者是可能的,并且鼓励。我们不需要在第 3 方平台上尊重地谈论它们。我们甚至在谈论教程。如果有什么不清楚的地方,那么我相信作者会很高兴知道那是什么,所以可以改进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
相关资源
最近更新 更多