我一直在关注不同的教程,但我不明白为什么我需要每个交换链图像而不是飞行中的每帧资源。
本教程:https : //vulkan-tutorial.com/Uniform_buffers
每个交换链图像都有一个统一的缓冲区。如果不同的图像不在同一时间飞行,为什么我需要它?如果前一帧已经完成,我可以不开始重写吗?
另外关于深度缓冲区的 lunarg 教程说:
并且您只需要一个来渲染每一帧,即使交换链有多个图像。这是因为您可以在使用交换链中的每个图像时重用相同的深度缓冲区。
这不能解释任何事情,它基本上说你可以,因为你可以。那么为什么我可以重用深度缓冲区而不是其他资源呢?
在简单的 Hello Cube 应用程序的情况下,它是为了最小化同步。
假设你的制服每帧都会改变。这意味着主循环类似于:
如果步骤#2 没有自己的uniform,那么它需要写一个uniform 前一帧正在读取。这意味着它必须与 Fence 同步。这意味着前一帧不再被视为“飞行中”。
归档时间: |
|
查看次数: |
1215 次 |
最近记录: |