垂直同步
定义
垂直同步是一种协调显卡帧输出与显示器刷新周期的图形显示技术,其名称来自显示器每扫描完一幅画面、从底部回到顶部时发出的垂直同步信号。[1][3] 它针对的是一种称为画面撕裂的视觉缺陷:当显卡输出速率与显示器刷新速率不一致时,屏幕上可能同时出现两帧或更多帧的内容。 在可变刷新率技术普及之前,把缓冲区的交换时机与垂直刷新对齐,是缓解撕裂最常见的做法。
该功能的典型表现是:显卡每完成一帧渲染后并不立即送出,而是等到垂直同步信号到来再交由显示器呈现,从而使显卡输出帧数与刷新率趋于一致。[3][4]
原理
显示器并非整屏同时更新,而是以逐行扫描的方式从顶部到底部依次写入像素,每扫完一行发出一个水平同步信号,扫完一整帧再发出一个垂直同步信号,标示前一帧结束与下一帧开始。[3][5] 显卡渲染速度与这一扫描过程不同步时,新画面可能在扫描中途被写入,屏幕上方便停留在旧帧、下方已是新帧,形成水平错位的撕裂。[3] 以 60 Hz 显示器为例,两次垂直同步信号间隔约为 16.67 毫秒,这也是一个刷新周期的时长。
实现上通常采用双缓冲:显卡把绘制完成的图像写入后缓冲区,显示器只从前缓冲区读取内容;开启垂直同步后,只有显示器扫完当前帧、进入两次扫描之间的垂直消隐区间时,前后缓冲区才允许交换。[1] 这样新帧总是从屏幕顶端开始呈现,不会中途替换正在显示的内容。[6] 用公式表示,若刷新率为 $f_r$,则每个同步周期为 $T = 1/f_r$,帧率上限亦被限定为 $f_r$。
双缓冲在帧率略低于刷新率时容易产生成倍跌落:原本可在 1 个周期完成的一帧若略微超时,就只能延后到下下个同步点,60 Hz 下可能由 60 帧降至 30 帧,表现为重复显示同一帧的卡顿。 三重缓冲增加一个后台缓冲区,让显卡在等待交换期间继续渲染后续帧,交换时选取最新的完整帧送出,从而在保留同步的同时降低停顿概率。[6] 移动操作系统的图形管线也采用类似思路,把界面渲染与图层合成按硬件产生的垂直同步节奏调度。[7]
sequenceDiagram
participant B as 后缓冲区(显卡渲染)
participant F as 前缓冲区(送显)
participant D as 显示器逐行扫描
B->>B: 渲染第 n 帧
B->>F: Vsync 信号到达时交换
F->>D: 从顶部开始扫描第 n 帧
Note over D: 扫描期间禁止交换
B->>B: 等待期间渲染第 n+1 帧
发展历程
垂直同步的概念与早期的模拟显示信号体系相关,显示器依靠行同步与场同步信号维持扫描的稳定,垂直方向上的同步因此也被称为场同步。[1] 在计算机图形领域,这一机制起初主要随硬件渲染接口提供:DirectX 与 OpenGL 等硬件渲染方式具备等待垂直同步的能力,而早期的软件渲染接口并不提供此类功能,运动图像容易出现撕裂,相关实现方案因此被专门提出。[3]
2012 年前后,随着 Android 4.1 在图形管线中引入三重缓冲,垂直同步被用于渲染同步,使应用界面与图层合成按硬件产生的同步节奏工作,滚动与翻页等操作的节奏更趋一致。[7] 此后,针对固定刷新率同步带来的跟手延迟,业界又出现了插队送显等优化思路,以及在桌面端引入可变刷新率标准的尝试。[7][8]
可变刷新率方向上有两条代表性路线:英伟达(NVIDIA)于 2013 年推出 G-Sync,借助显示器内的专用硬件模块协调刷新率与显卡帧缓存;超微半导体(AMD)于 2015 年发布 FreeSync,同样通过调整垂直消隐时间来动态改变刷新率。 视频电子标准协会(VESA)的 Adaptive-Sync 也被列为使显示器刷新率随显卡渲染速率变化的标准方案。[8] 超微半导体还推出过 Enhanced Sync,在帧率高于刷新率时按类似三重缓冲的方式输出最新帧,低于刷新率时则自动退化为不同步状态。[6]
应用
电子游戏是该技术最普遍的使用场景,多数游戏的图像设置中提供开启或关闭垂直同步的选项,显卡控制面板也可将其设为始终开启、始终关闭或由应用程序决定。[2][4] 在车辆、射击等高速运动画面中,开启后能明显减少横向错位;显卡性能明显高于刷新率时,开启还可抑制冗余渲染。[1]
该结构也用于移动设备的界面渲染与合成调度,以及虚拟现实头戴显示的渲染时序控制:渲染模块需在下一次同步信号到来前完成场景计算与畸变校正,显示模块则依同步信号按序更新画面。[7][9] 在云化虚拟现实等把渲染与显示分离的系统中,还区分出服务器侧的虚拟同步脉冲与客户端侧的真实同步脉冲,前者仅用于划分渲染帧的边界。[9]
局限
垂直同步直接限制了帧率上限,使其无法超过显示器刷新率;当显卡性能远高于刷新需求时,超出部分不被呈现,存在帧输出被浪费的情况。[2] 更关键的是输入延迟的增加:帧必须等到同步点才能送出,操作到画面反馈之间被拉长,在对响应时间敏感的射击与竞技类游戏中较为明显。[2][1]
帧率低于刷新率时,双缓冲下的垂直同步会引发跳帧与卡顿,帧率与刷新率差距越大越明显,并可能按整数分之一跌落。[1] 若在同步周期内未能完成绘制,系统只能重复使用上一帧,画面出现可感知的停顿。[10] 三重缓冲虽可降低这类停顿,但额外缓冲会进一步延后反馈,且部分实现需外部工具或配置文件才能开启。[8] 此外,在窗口模式下运行或使用混合显卡配置时,开启该功能还可能出现图形显示异常。[1]
该技术本身只能在固定刷新率下折中处理撕裂与延迟,并不能同时消除两者;真正按显卡渲染节奏改变刷新率的能力需要可变刷新率方案提供。[8]
参见
参考资料
- 垂直同步_百度百科 [引用日期2026-10-29]
- 问答:垂直同步技术有什么用? [引用日期2026-10-29]
- Gdi模式下实现垂直同步的方法 - Google Patents [引用日期2026-10-29]
- 수직 동기화 활성화 및 비활성화 [引用日期2026-10-29]
- 关于图像撕裂、掉帧等异常现象的原理以及优化方案-华为开发者话题 | 华为开发者联盟 [引用日期2026-10-29]
- Enhanced Sync Overview [引用日期2026-10-29]
- CN110045908A(PDF) [引用日期2026-10-29]
- wustl.edu 上的网页 [引用日期2026-10-29]
- nju.edu.cn 上的 PDF 文件 [引用日期2026-10-29]
- CN118968900A(PDF) [引用日期2026-10-29]