QualitySettings.vSyncCount 垂直同步数

static var vSyncCount : int

Description描述

The VSync Count.

垂直同步数。

The number of VSyncs that should pass between each frame. Use 'Don't Sync' (0) to not wait for VSync. Value must be 0, 1 or 2

VSyncs数值需要在每帧之间传递,使用0为不等待垂直同步。值必须是0,1或2。

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Awake() {
		QualitySettings.vSyncCount = 1;
	}
}
// Sync framerate to monitors refresh rate
//同步帧率到显示器刷新率
QualitySettings.vSyncCount = 1;

参见:Quality Settings.

V-Sync(垂直同步)这个功能事实由来已久,早于Voodoo2的时代V-Sync就已引入到DirectX和Windows操作系统当中,其作用主要是让显卡的运算和显示器刷新率一致以稳定输出的画面质量,而无论是微软还是游戏开发商均建议用户开启V-Sync功能,不过实际上由于启用V-Sync会大幅影响显卡性能(显示器刷新频率是多少显卡最多也只能有同等的帧数输出,而即使是Quad SLI显卡启用V-Sync后,如其显示器刷新频率只有65Hz,那么它在任何游戏中的速度最多也只有65 FPS),所以启用V-Sync由于很难体现出不同显卡的性能差异所以到目前已基本没有多少显卡测试会开启这个功能。

不过话说回来,启用V-Sync实际也有助提升游戏运行的稳定性,毕竟其启用后会强制令显卡使用Double Buffering(双重或前后置缓存,启用后会降低显卡性能)可令显卡处理数据时先将下一个需要输出的画面存入到缓存(显存)当中然后不断循环,所以其事实是牺牲了部分游戏速度而保证了画面的连贯和稳定性。但是对于现有的显卡产品来说由于其运算性能已是相当强劲在一般3D游戏运行基本也不会出现掉帧或花屏等问题(当然如果以整合图形核心玩F.E.A.R.的话那就很难说了,毕竟那肯定已经是满负荷运作的了),目前启用V-Sync似乎已是一个多余的选择,然而人类肉眼识别事物极限速度最高一般也只有75帧/秒,高于这个速度的话肉眼虽然也能看到但已基本无法作出正常反应,所以V-Sync启用与否那还是要看用户实际的使用环境而定并非单纯的显卡性能高低问题。

那么如果我们现在启用了V-Sync,在同一平台和显卡情况下其性能和未启用V-Sync时是否会有很大的损失呢?答案是相对的,由于V-Sync只限制了显卡输出的帧速而非性能,所以启用V-Sync后用户仍可在游戏中设置高分辨率及不同的AA/AF设定进行游戏,其效果理论上还是和未启用V-Sync时是一样的。不过由于V-Sync使用了Double Buffering技术对显卡的运算性能事实也是有一定程度的影响,而为了解决这个问题,无论是微软,游戏厂商还是NVIDIA和ATi这两大GPU厂商目前均已在DirectX,游戏和相关的驱动中为V-Sync引入了名为Triple Buffering(三重缓冲)的技术支持。

Page last updated: 2011-9-17