如果窗口大小调整为较小的尺寸,显示引擎可能不会强制您更改交换链图像尺寸。它可能会通过错误代码通知您VK_SUBOPTIMAL_KHR
(尽管如果演示性能不受影响,它可能不会告诉您)。但是,如果将窗口大小调整得更大,显示引擎可能会抛出VK_ERROR_OUT_OF_DATE_KHR
。这不是你可以忽视的事情。显示引擎也不能承诺永远不会给你这些东西。
这意味着您的代码必须能够重建交换链。由于无论如何您都必须考虑到这一点,唯一的问题是您是否在调整窗口大小时执行此操作,还是在显示引擎强制您这样做时执行此操作。
我想说的是,如果显示引擎不让你重建交换链,那么不这样做可能会更快。使用动态状态并不比管道状态慢,而且您不会在帧中更改它。事实上,您不应该仅仅因为调整了交换链的大小而重建所有管道,因此无论如何您都应该对视口使用动态状态。
简而言之:你应该两者都做。