缓存
渲染涉及大量的缓存,其中最重要的缓存是帧缓存和深度缓存
帧缓存
帧缓存存储的是每个像素的色彩,即渲染后的图像。它常用在现存中,显存读取帧缓存中的数据,并将转换为CRT接收的合适信号。
双缓存技术是为了防止图像在未渲染完成时
就显示,原理是:
提供两个帧缓存,其中一个帧缓存存放当前展示的图像数据(又称为显示缓存
),另一个帧缓存存放下个需要展示的图像(又称为离线缓存
),当渲染完成时切换帧缓存,有两种切换方案
- 使用页切换技术,显存直接从离线缓存中读取数据
- 将离线缓存复制到显示缓存中去展示
深度缓存
它不存储像素的颜色,而是存储像素的深度信息,深度信息有多种不同的变体,但基本上都在反应物体到摄像机的距离。
实践中,通常保存的是裁剪空间的z坐标,这也是z-buffer名称的由来
深度缓存一般用来计算物体之间的遮挡。在光栅化三角形时,计算各像素的插值深度。
INFO
在开始进行新的渲染之前,要设置z-buffer各值为无限远(在裁剪空间中,这个点为1.0),这样第一批像素才能通过深度测试。且一般不对z-buffr设置双缓存。