使用或不使用VSync

时间:2011-05-07 19:51:41

标签: c# opengl opentk vsync

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

3 个答案:

答案 0 :(得分:9)

关于这个问题可以说很多。让我指望一下:

  1. 如果你没有看到撕裂,即使你认为自己没有,也可能是vsync。原因可能会有所不同,但最终,如果发生任何移动,框架中间的交换缓冲区非常明显(一个原因可能是您没有配置为翻转缓冲区,因此需要对帧缓冲区进行复制)< / LI>
  2. vsync on也有明显的文物。通常,它会创建显示可变时间的帧,与显示刷新率相关的帧数与渲染率相关。这可能会造成微型口吃,而且很难控制,因为当你生成你的帧时它知道它会显示的时间点,因此,你无法补偿运动伪影。这就是为什么有些人试图将渲染速度锁定到刷新率的原因。总是以60fps(或30fps)渲染,时间更新为time += 16.7ms John Carmack一直在要求一种模式“60Hz的vsync,但如果我错过截止日期则不同步”我认为这将是原因。
  3. vsync on节省电力(在上网本上很重要)
  4. vsync off可减少输入延迟(当您的输入在显示前3帧时,它可能开始变得很重要)。您可以尝试补偿其中的一部分,但最终,在最后一分钟很难注入输入更新。
  5. 所以最重要的答案是没有完美的答案。这真的取决于对你的游戏更重要的事情。您需要注意的事项:您想要实现的帧速率,输入延迟的重要程度,游戏中的移动量,电源将成为一个问题。

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

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

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

正如schanaader所提到的,通常游戏会在视频设置菜单中的某处将vsync作为配置选项。对于那些不知道vsync意味着什么的人,默认应该仍然是“on”,如果用户知识足够,他们可以选择调整它以查看差异是什么