假设 GPU 有多个后台缓冲区可供渲染。
时间轴:
想法:
如果可能的话,我希望看到文档。我只是不知道语义是在什么级别定义的。
语义未定义。至少,在 OpenGL 中,即使使用 wgl/glX_EXT_swap_control 也是如此。交换间隔将让您决定交换是否将等待垂直同步,但如果您在垂直同步之间交换多次,则由实现定义显示哪个图像。
wgl/glX_EXT_swap_control_tear 允许您指定在交换缓冲区较晚时需要撕裂行为。但没有说明如果你早到会发生什么。
Vulkan 允许实现通过其现有模式公开不同类型的“交换”功能。 FIFO 是唯一必需的呈现模式,意味着您呈现的每个图像都将按照提供的顺序呈现。这意味着如果您尝试“交换”(用 Vulkan 的话说,获取)下一张图像并且两者都在等待呈现,那么 GPU 将停止运行。
有一些模式可以立即呈现给定的图像,一种模式可以反映“swap_control_tear”,还有一种模式在您的情况下很有用,如果您尝试渲染缓冲区的速度快于呈现的速度,则等待的模式将被丢弃支持下一张图片。