5

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

4

3 回答 3

9

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

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

所以最重要的答案是没有完美的答案。这真的取决于什么对你的游戏更重要。你需要看的东西:你想要达到的帧率,多少输入延迟很重要,游戏中有多少移动,功率是否会成为一个问题。

于 2011-05-07T21:11:49.220 回答
4

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

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

于 2011-05-07T19:55:14.530 回答
2

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

  • 也许你不能像其他游戏玩家那样密切注视屏幕
  • 也许当你看到一点点眼泪时,你并不像某些游戏玩家那样生气
  • 也许您的特定屏幕比其他屏幕更能隐藏撕裂

正如 schanaader 所提到的,通常游戏会将 vsync 作为配置选项保留在视频设置菜单的某个位置。对于那些不知道 vsync 是什么意思的人来说,默认值仍然应该是“开启”的,如果用户足够了解,他们可以选择调整它来看看有什么区别

于 2011-05-07T20:04:06.443 回答