使用或不使用VSync

bbo*_*sak 5 c# opengl vsync opentk

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

Bah*_*bar 9

关于这个问题,可以说很多事情.让我指望一下:

  1. 如果你没有看到撕裂,即使你认为你不是,你也可能会被vsync.原因可能会有所不同,但最终,如果发生任何移动,帧中间的交换缓冲区非常明显(一个原因可能是您没有配置为翻转缓冲区,因此需要对帧缓冲区进行复制)
  2. vsync on也有明显的文物.通常,它会创建显示可变时间的帧,与显示刷新率相关的帧数与渲染率相关.这会产生微口吃,且很难控制,因为你不知道,当你生成你的框架,其剔它会显示在,所以,你不能补偿运动伪影.这就是为什么有些人试图将渲染速度锁定到刷新率的原因.总是以60fps(或30fps)渲染,时间更新是time += 16.7msJohn Carmack一直要求的模式"60Hz的vsync,但如果错过截止日期则不同步",因为我认为这是因为这个原因.
  3. vsync节省电力(在上网本上很重要)
  4. vsync off减少了输入延迟(当你的输入在显示前3帧时,它可能开始变得很重要).您可以尝试补偿其中一些,但最终,在最后一分钟很难注入输入更新.

所以最重要的答案是没有完美的答案.这真的取决于对你的游戏更重要的事情.您需要注意的事项:您想要实现的帧速率,输入延迟的重要程度,游戏中的移动量,电源将成为一个问题.