谈谈我对画面撕裂,垂直同步,Freesync以及G-sync的理解「建议收藏」

谈谈我对画面撕裂,垂直同步,Freesync以及G-sync的理解「建议收藏」最近一直在接触图形学相关的知识,感觉之前在学OpenGL的时候不需要思考帧缓冲是怎么处理到显示器上的,驱动都帮我做好了,现在在接触vulkan的时候发现自己对Swapchain这个东西的工作原理不是很了解,去网上搜索资料的过程中发现了垂直同步这个知识点,以前玩游戏的时候也经常看到但是不明白什么意思(对不起!我不是一个合格的游戏玩家>-<),觉得自己还是得搞清楚一下,于是整理了一下自己对…

大家好,又见面了,我是你们的朋友全栈君。

最近一直在接触图形学相关的知识,感觉之前在学OpenGL的时候不需要思考帧缓冲是怎么处理到显示器上的,驱动都帮我做好了,现在在接触vulkan的时候发现自己对Swapchain这个东西的工作原理不是很了解,去网上搜索资料的过程中发现了垂直同步这个知识点,以前玩游戏的时候也经常看到但是不明白什么意思(对不起!我不是一个合格的游戏玩家>-<),觉得自己还是得搞清楚一下,于是整理了一下自己对垂直同步及相关概念的理解

开始正文!

CRT是阴极射线管显示器,以传统的CRT显示屏刷新显示来看,他的工作方式是从上往下从左往右的顺序不断读取某个特定内存缓冲中的数据来刷新屏幕上的显示,渲染程序也同时不断更新该内存缓冲以达到输出动态的画面。

显示器会存在一个刷新频率的因素:以Hz为单位,一般是60Hz或144Hz,由显示器决定,这是一个比较固定的数值,不会有太大的浮动,可能温度会影响这个频率吧(显示器,硬件决定);渲染程序也会存在一个刷新频率的因素: 以FPS(帧每秒)为单位,因为这个刷新是由应用程序控制的,影响因素会很多,比如CPU,GPU的影响,算法的影响,这些都会影响计算一个画面所需要的时间,从而影响该频率(应用程序和CPU,GPU,主要是程序,其次是硬件)

那么当两个频率不一致时,很容易出现几种问题:

该怕地裹紧小被子

1、画面撕裂

什么是画面撕裂呢,画面撕裂就是显示器在显示一个画面时,中间存在一条或多条明显的“分界线”,这一般是由于每秒帧数要高于刷新频率,可能显示器单位时间内显示1个画面,而程序已经计算出了第二帧,显示器在刷新第一帧画面到一半的时候,也就是频幕中间那个位置,剩下的图像已经被应用程序替换成了第二帧,没有办法,第一帧剩下的一半已经被丢弃了,显示器只能将第二帧的下半部分和第一帧的上半部分拼在一起显示,这样就会有一个明显的分界线,这就是画面撕裂

FPS与刷新率同步
FPS与刷新率同步
谈谈我对画面撕裂,垂直同步,Freesync以及G-sync的理解「建议收藏」
FPS高于刷新率画面出现撕裂

 

 

 

 

 

2、跳帧

原理也是和画面撕裂一样的,画面撕裂只是在显示过程中丢弃了某帧一部分,跳帧就是正好那一个帧都被完整丢弃了

3、输出延迟

上面两个问题都是因为FPS高于刷新率,那么输出延迟差不多是FPS低于刷新率,显示器在刷新玩一个画面后发现第二帧图像还没计算出来,没办法只能继续显示第一帧内容,导致了延迟,由于可能第二次刷新画面到一半时,第二帧图像来了,这又出现了画面撕裂。

输出延迟是一个很头疼的问题,代表你的CPU、GPU不过关,或者说这个渲染程序算法太复杂了,有一个特殊情况可以避免FPS过低导致的画面撕裂,就是当FPS是刷新率的约数的时候,因为可以凑整的嘛。这大概也是为什么显示器选择刷新率为60Hz或144Hz的原因,因为它们的约数多啊,60一共有11个约数,144一共有12个约数
60Hz:30Hz,20Hz,15Hz,12Hz,10Hz,6-1Hz
144Hz:72Hz,48Hz,36Hz,24Hz,18Hz,16Hz,12Hz,8Hz,6Hz,4Hz,2-1Hz

谈谈我对画面撕裂,垂直同步,Freesync以及G-sync的理解「建议收藏」

由于两个频率不一致会出现这些问题,那么需要一些手段来让两个频率达到一致或者说同步,就不会出现还没用就被丢弃这样的性能浪费和画面撕裂这种头痛的问题

垂直同步、Freesync、G-Sync,这里有三种同步方式(sync理解成同步)

 其中垂直同步是早期技术,当时还没办法用应用程序控制显示器的刷新频率,所以这种同步是控制应用程序方面帧输出的频率达到和显示器一样的, 垂直同步相对于其他两个技术的优点就是泛用性强,不存在显示器不支持调整频率就无法使用的情况,不受设备的限制。

采用垂直同步其实就是在FPS高于刷新率的时候压低FPS,而FPS低于刷新率的时候就失去了意义,还是会出现频率不一致时的相关问题,所以在FPS低于刷新率的时候不建议开启垂直同步,开了其实影响不大。

FreesyncG-Sync则是垂直同步升级版,在垂直同步发展了一段时间之后,出现了允许调整刷新频率的显示器,在FPS高于刷新率的时候和垂直同步差不多,但是在FPS低于刷新率的时候,他可以调整刷新率以适应FPS,不一定要调到和FPS一样,只要调成是FPS的倍数就能避免画面撕裂,原因在上文说了
    Freesync是AMD公司的技术,比G-Sync更早出现
    G-Sync是Nvidia公司的技术,G-Sync不免费,支持G-Sync的显示器价格会比支持Freesync的显示器贵些,如果你是nvidia的忠实粉,那你当然会选择G-Sync对吧,(只有小孩才做选择,我全都要,手动滑稽)
    后两者在实现细节上是肯定有差异的但是原理一致

总结一下吧,这些问题都是由于FPS以及刷新率这两个频率的不同导致的,而解决方案就是将两个频率同步,这样既能避免渲染过多且多余图像的浪费,又能保证画面的舒适流畅,相对于垂直同步这个比较年迈的技术,AMD公司的Freesync和Nvidia公司的G-Sync这两个技术优化了垂直同步,原本只能压低FPS来保持同步,现在能同通过调整显示器的刷新率来解决这些画面问题

再说一下,Freesync和G-Sync技术调整刷新率的范围并不是1到最大刷新率的,而是有一个规定范围

参考的文献资料网上有很多,我就不列出来了^-^

最后祝大家工作顺心如意

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132773.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java之Java开发工具

    Java之Java开发工具

    2021年7月21日
    138
  • linkhashmap和hashmap的区别_java优先队列默认是大顶堆吗

    linkhashmap和hashmap的区别_java优先队列默认是大顶堆吗我们先看下HashMap和LinkedHashMap的继承关系。这两个类都实现了Map接口,同时LinkedHashMap继承于HashMap。具体如下图所示。Map的设计思想就是以空间来换时间,主要用来存储键值对。键不可以重复,值可以重复。HashMap这里简要说一下HashMap的性质,具体的源码分析可以参见前面的博客https://blog.csdn.net/SMonkeyKing/…

    2025年7月21日
    5
  • Unity3D各平台Application.xxxPath的路径

    Unity3D各平台Application.xxxPath的路径iOS/Android/Windows平台应用存储路径,Unity3D在各平台的路径,Application.dataPath/Application.streamingAssetsPath/Application.temporaryCachePath/Application.persistentDataPath

    2022年5月1日
    56
  • Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]

    Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]QTreeView和QStandardItemModel的使用QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点)。1. QStandardItemModel在QTreeView中的使用使用QTree

    2022年6月5日
    410
  • 数据分析方法论和数据分析方法的区别(数据分析理论)

    如何理解数据分析的方法论问题?首先,数据分析方法论就如同国家的方针政策,指导和决策我们分析的方向。从宏观角度知道如何进行数据分析,就像是一个数据分析的前期规划,知道着后期数据分析工作的开展。数据分析法则就是指具体的分析方法,例如我们常见的对比分析、交叉分析、相关性分析、回归分析、聚类分析等数据分析法,数据分析法则是从微观角度指导我们如何进行数据分析。那么,数据分析方法论的作用有什么呢?…

    2022年4月15日
    39
  • 如何将ip划分到vlan_两个vlan有同一mac

    如何将ip划分到vlan_两个vlan有同一macVLANVLAN技术主要就是在二层数据包的包头加上tag标签,表示当前数据包归属的vlan号。VLAN的主要优点:(1)广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。(2)增强局域网的安全性:VLAN间不能直接通信,即一个VLAN内的用户不能和其它VLAN内的用户直接通信,而需要通过路由器或三层交换机等三层设备。(3)灵活构建虚拟工作组:用VLAN可以划分不同的用户…

    2022年8月10日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号