垂直同步VSYNC,帧率,渲染缓存

整理下垂直同步,帧率,以及GPU的缓存渲染的内容,主要说明对手游和移动设备影响

1,游戏设置中,经常会看到垂直同步这个选项,这个选项影响的是什么?

2,在实际游戏的开发和测试中,有注意到iOS的设置帧率需要被整除60,意思是只能设置15,30,这类的帧率,安卓则不受影响,原因是什么。

整理下自己的思路,更新下相关资料内容。

垂直同步和水平同步:

需要理解下显示器的工作原理,显示器显示画面是一行一行的进行扫描,或者隔行,总之是以行为单位进行扫描的。

水平同步信号,在行与行之间扫描,扫描完一行,触发

垂直同步信号,则是一帧画面与一帧画面之间,会触发这个信号

垂直同步信号是为了解决画面撕裂问题的,画面撕裂的原因是,如果没有垂直同步信号,当引擎渲染的帧数据比较快时,显示器跟不上,可能就会出现,当前正在显示某一帧,另外一帧又触发在显示器上显示,

目前的显示器一般支持的是双缓冲区方案,即显示在画面上的帧数据,以及放在缓冲区内的下一帧,两个帧轮流交换进行显示。

垂直同步是通过控制显示器显示来解决画面撕裂问题的,当有垂直同步信号来控制帧画面在显示器上进行显示,垂直同步信号一般以固定间隔的时间来控制帧的渲染,如下图,如果这一帧渲染过长,来不及显示了则等到下一帧画面进行显示,这就发生了卡顿。如果一切正常的,则整个画面是非常流畅的,而且由于垂直同步信号控制,垂直同步信号一般是显示器显示完一帧后才会发出,所以就解决了画面撕裂的问题。

可以发现,垂直同步的频率和引擎渲染的帧率,是有很大关系的,这就是第二部分

帧率和垂直同步

引擎渲染的过程是CPU提交数据,GPU进行渲染,渲染完的帧数据给显示器显示,

引擎的GPU渲染完成的速率可以称为引擎帧率,fps

显示器显示的速率可以被垂直同步信号控制,VSYNC

现在显示器一般会有一个主打的一个点就是刷新率,比如我买的这个显示器就是144hz,这个144hz是显示器刷新的频率,是VYSNC支持的上限。

引擎渲染帧率fps>显示器刷新率:比如引擎渲染出来120帧,但是显示器刷新率是60hz,这个时候开启了垂直同步会有什么影响?画面显示还是60帧,但是对于竞技类游戏,比如射击,动作游戏,开了垂直同步信号反而会让操作有延迟,降低手感。一般引擎渲染可以到120帧,说明主机的配置是不错的,显示器是卡点。

引擎渲染帧率fps=显示器刷新率:引擎60帧,显示器60hz,开启垂直同步,实际帧率会低于60帧。因为游戏是一个复杂的系统,不可能稳定60帧,如果有波动,垂直同步会放大这个影响。

引擎渲染帧率fps<显示器刷新率:引擎45帧,显示60hz,就没有开启垂直同步的意义了。

所以带来的问题是:

1,垂直同步信号要根据自己的硬件设备综合考虑

2,部分竞技类游戏比较考验操作,相信大家肯定也能想到,开了垂直同步,是肯定会对帧率有影响的,会影响到操作的实时性。

缓存机制

一开始提到的一个问题,iOS只能设置15帧,30帧,这种被60整除,但是安卓则没有这个限制,原因呢?也是和垂直同步有关系的。

iOS:双缓存机制+默认开启垂直同步

安卓:从4.1开始增加垂直同步,另外安卓支持的是三重缓存机制

双缓存机制的意思是显示帧和缓存帧循环交换,这样会有一个问题,双重缓存会导致操作延迟的问题,因为一帧已经在缓存了,当你操作后,如果这一帧被延迟,那操作就会受限。另外,因为是双重缓存,所以帧率就限制在了垂直同步信号的倍数了。

解决这个问题的办法之一是三重缓存,即显示帧后面又两个帧缓存进行循环交替,这样就可以即使的更新引擎渲染的帧,延迟的问题得到很大缓解。这个也是三重缓存的帧率在引擎层面不受限的原因,可以设置合理的帧率。

备注:

1,(转)DirectX 并不原生支持三重缓冲!而是使用了一种叫“预渲染队列“的方式。这种方式与三重缓冲不同的地方在于,它不会丢弃显卡渲染完却未被使用的帧(即过时的帧),而会强制将这些旧帧显示出来,因此会造成更大的操作延迟,甚至比光开垂直同步的延迟还要大。DirectX 的游戏若想使用三重缓冲,需要游戏厂商提供相应的支持。很可惜的是,不少采用 DX API 游戏虽然在画面选项里提供了”三重缓冲“选项,实际上却是使用了“包含 3 个缓存空间的预渲染队列”,这些游戏使用的到底是不是真正的三重缓冲,只有你亲身体验后才能弄明白。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值