使用或不使用 VSync

本文关键字:VSync | 更新日期: 2023-09-27 17:55:36

我正在决定是否将VSync用于我使用OpenGL开发的新游戏。目标是为用户提供最佳的游戏体验,并在性能和质量之间取得良好的平衡。该游戏设计为在较旧的(英特尔/上网本)计算机和较新的(NVidia/i7 台式机)计算机上运行。但是,我知道VSync的目的是防止撕裂;即使关闭了 VSync,我也从未能够重现这个撕裂问题。提供最佳体验;VSync 应该打开还是关闭?

使用或不使用 VSync

关于这个问题,有很多事情可以说。让我数一数:

  1. 如果您没有看到撕裂,即使您认为自己没有,您也可能是 vsync。 原因可能有所不同,但最终,如果发生任何移动,在帧中间交换缓冲区是非常明显的(一个原因可能是您没有配置为翻转缓冲区,因此必须复制帧缓冲区)
  2. vsync on 也有明显的伪像。通常,它会创建显示可变时间的帧,与显示刷新率的关系比呈现速率更相关。这会产生微卡顿,并且很难控制,因为您不知道何时生成帧时它会显示在哪个刻度,因此您无法补偿运动伪影。这就是为什么有些人试图将渲染速度锁定在刷新率上的原因。始终以 60fps(或 30fps)渲染,时间更新time += 16.7ms John Carmack 一直在要求一种"以 60Hz 进行垂直同步,但如果我错过了截止日期就不要同步"的模式,我认为会是这个原因。
  3. 开启 vsync 可省电(在上网本上很重要)
  4. 关闭垂直同步可减少输入延迟(当您的输入在显示前 3 帧时,它可能开始变得重要)。您可以尝试补偿其中的一些,但最终很难在最后一刻注入输入更新。

所以底线答案是没有完美的答案。这实际上取决于什么对您的游戏更重要。您需要考虑的事情:您想要实现的帧速率,多少输入延迟很重要,游戏中有多少运动,功率将是一个问题。

为了获得最佳用户体验,请在菜单中放置一个选项以打开/关闭 VSync。这样用户就可以决定。您可能无法重现撕裂,但这在某些系统上绝对是一个真正的问题。

至于默认设置应该是什么,我不确定,我认为这是您的选择。我更喜欢默认关闭垂直同步,因为它在启用时会降低性能,并且大多数人不认识撕裂或不关心它,但也有充分的理由默认启用它。

我相信 VSync 的默认值应该打开(基于我所有的游戏,而不是编程经验:))。 仅仅因为你没有看到它,并不意味着你不应该遵循一个好的实践。

  • 也许你不能像其他游戏玩家那样盯着屏幕
  • 也许当你看到一点眼泪时,你并不像一些游戏玩家那样烦恼
  • 也许您的特定屏幕比其他屏幕更好地隐藏撕裂

正如Schanaader所提到的,通常游戏会将vsync作为视频设置菜单中某处的配置选项。 对于那些不知道vsync意味着什么的人来说,默认值仍应为"打开",如果用户知识渊博,他们可以选择调整它以查看差异