您的位置:首页 > 移动开发 > Unity3D

Unity3D显示帧率以及设置垂直同步

2018-03-28 09:20 1006 查看
using System.Collections;
using UnityEngine;

public class Test : MonoBehaviour
{
float updateInterval = 0.5f;
private float accum = 0.0f;
private float frames = 0;
private float timeleft;

void Start()
{
timeleft = updateInterval;
}

void Update()
{
timeleft -= Time.deltaTime;
accum += Time.timeScale / Time.deltaTime;
++frames;

if (timeleft <= 0.0)
{
Debug.Log( "" + (accum / frames).ToString("f2"));
timeleft = updateInterval;
accum = 0.0f;
frames = 0;
}
}
}

显示器扫描的过程中有两个重要的概念:HBlank(行消隐)和VBlank(场消隐)。HBlank是指当行扫描到最右端时需要快速返回到下一行的最左端的过程。而VBlank则是指扫描完一帧,准备开始扫描下一帧,扫描线从右下角返回到左上角的过程。这两个过程的时间间隔中,扫描线需要变得blank,以防止看到一条斜线显示在屏幕上。游戏渲染中的VSync(垂直同步)技术就与刷新率和VBlank有关。先说说为什么需要VSync。一般情况下CPU执行游戏逻辑和GPU执行渲染的计算都会快于屏幕的刷新,也就是CPU提交渲染数据和命令到GPU、GPU填充渲染结果到显存的速度会快于屏幕刷新,因此当屏幕刷新进行的过程中很可能会出现显存内容被改变的情况,从而造成Tearing(画面撕裂)。
Unity在Quality Settings中有个VSync Count属性可以设置VSync,分别是Don’t Sync(关闭VSync)、Every VBlank(每个VBlank计算一帧)、Every Second VBlank(每两个VBlank计算一帧)。https://docs.unity3d.com/Manual/class-QualitySettings.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: