为什么我不能为交换链指定确切的图像数量,而只能指定 minImageCount?

Why can't I specify the exact number of images for a swapchain, but only minImageCount?

VkSwapchainCreateInfoKHR 的文档让我感到困惑:

minImageCount is the minimum number of presentable images that the application needs. The implementation will either create the swapchain with at least that many images, or it will fail to create the swapchain.

这会导致一些问题,即我不能在代码中使用固定大小的数组,因为直到运行时我才知道图像的确切数量。为什么做出这个决定,有没有办法强制要求的行为?

这种方法允许硬件 vendors/driver 开发人员以更灵活的方式实现表示引擎。 Presentation 是 OS-dependent,每个操作系统都有自己的程序负责在屏幕上显示图像。有 OS 依赖的扩展允许创建可呈现的表面,但 Vulkan 本身是一个多平台 API,并且 VkSwapchainKHR 对象对于所有操作系统也是通用的。此外,驱动程序创建的交换链图像的数量可能不仅取决于 OS,还取决于在交换链创建期间指定的其他参数(例如当前模式)。因此,在管理可呈现图像数量方面的这种灵活性是必要的。