计算机图形学 · 第3章
交互与动画机制
双缓存机制显微镜 Double Buffering Microscope
v3.3 Pipeline
当前屏幕显示 (Display Output)
60Hz 稳定显示
映射源:Front Buffer
画面帧号:Frame #124
状态标识:完整画面 (Complete)
用户视觉体验:0 闪烁 · 0 撕裂
双缓存保护生效中
显存读取:
DAC/Display Scanout 仅读取 Front
后台绘制绝不外显
双缓存工作循环 (Pipeline Loop)
01
可见
Front Buffer 显示中
(当前画面)
视频控制器(DAC)正逐行将 Front Buffer 数据发往显示屏
02
后台不可见
Back Buffer 离屏着色
(后台绘制)
GPU 渲染管线将下一帧图元直接栅格化到 Back Buffer 内存
03
就绪
下一帧准备就绪 (Ready)
(对齐时钟)
Back 完整生成,等待显示器垂直消隐期 (V-Sync) 避免画面撕裂
04
指针交换
Swap Buffers 交换指针
(瞬间切换)
本质仅交换显存地址指针,耗时极短,绝不发生大量像素复制
05
循环再起
旧 Front 转为新 Back
(角色对调)
原 Front Buffer 被清空并开始承接下一时刻 (Frame 126) 的绘制
核心设计哲学:
“永远不要把画了一半的未成品递给用户看”
显存状态透视 (VRAM Buffers)
Front Buffer (前台)
VISIBLE
持有画面:Frame 124
绘制状态:100% 完整绘制
只读提供给屏幕扫描线扫描
Front
交换操作:glXSwapBuffers / requestAnimationFrame
SWAP READY
Back Buffer (后台)
RENDERING
正在着色:Frame 125
进度阶段:栅格化中 (92%)
对外隐藏,禁止屏幕直接读取
Back (下一帧)
● 对比洞察:
若单缓存(Single),边画边被扫描读出 $\to$
剧烈闪烁/撕裂
重要考点