zoukankan      html  css  js  c++  java
  • 【Unity】VSync垂直同步

    最近在做UI页面拖拽优化的时候,发现一个问题,是列表还是项目中的地图,在拖拽过程中,几秒钟就可能顿一下闪一下。查了查,可能是因为垂直同步关闭导致的画面撕裂,看了看Edit--Project Settings--VSync Count,确实是关掉了垂直同步。
     
    垂直同步在我印象里一直是用于优化CPU耗时的条目之一,但对垂直同步开关的影响反而一知半解。https://zhuanlan.zhihu.com/p/127974083 因此了解垂直同步在做什么,垂直同步开关各有什么影响,就很重要。
     
    垂直同步:
    1.刷新率和帧率
    刷新率指的是显示器的刷新率,60Hz就是屏幕一秒会刷新60次画面。
    缓冲区是显卡的缓冲区,显卡渲染好一张画面就会把画面存储在显卡的显存中,储存之后再去渲染下一张画面,显卡每秒钟产生120张画面也就是1/120秒就有一张画面放进缓冲区,下一个1/120秒,新的画面会给取代掉,这也就是帧数的概念。
    显示器刷新率和显卡帧率不同步就会画面撕裂。
     
    2.垂直同步
    打开垂直同步后,当显示器尚未完成一帧画面刷新时候,前后缓冲区不允许交换,显示器刷新完一帧画面时,缓冲区才可以进行交换,不会在上一帧画面未显示完全就开始显示下一帧造成画面撕裂,也就是显卡画面刷新速度等待显示器刷新速度,使画面更流畅。
    但是,帧率比显示器刷新率高很多的情况下,为了将显示器的刷新速度和显卡向缓冲区写入画面的时间保持同步,就要增加延迟,延迟“过快的生成画面”向显示器的输出,就会造成一定程度影像传输和操作反馈的延迟。这对需要快速反应的竞技类游戏是致命的。
     
    3.关闭VSync是CPU优化最直接的一个方法,在Profiler中可以看到VSync占了很大比重
     
    4.VSync关闭之后可以提高帧速率,但是画面可能会不连续。
     
     
    只要有显卡,有显示器的设备都涉及到垂直同步,查看NVIDEIA控制面板可以看到垂直同步选项,而且有其介绍
     
    关闭垂直同步
    允许GPU不受刷新率限制进行渲染,并可以在单个刷新间隔对多个渲染帧进行扫描输出,会产生画面撕裂
    开启垂直同步
    限制GPU最大渲染速率为显示器的最大刷新率,并防止撕裂,但是由于渲染速率受限,延时可能较长且性能较低。另外,如果GPU渲染速率低于刷新率
     
    所以开关垂直同步各有其利弊,要依项目运行需求来开关,在游戏中当然是可以给用户提供这个开关以选择性能和画面连续性。
     
     

  • 相关阅读:
    13种常用按钮、文本框、表单等CSS样式
    独家:深度介绍Linux内核是如何工作的
    查看chrome 已有插件
    Oracle双机冗余实战
    战争地带2100(Warzone 2100)
    Elive 1.9.24 (Unstable)发布
    使用 Vagrant+Docker 构建 PHP 最优开发环境
    基于socketio实现微信聊天功能
    MySQL的查询需要遍历几次B+树,理论上需要几次磁盘I/O?
    马蜂窝裁php换java,php又又又凉凉了吗
  • 原文地址:https://www.cnblogs.com/weigangblog/p/15543169.html
Copyright © 2011-2022 走看看