Skip to content

缓存

渲染涉及大量的缓存,其中最重要的缓存是帧缓存和深度缓存

帧缓存

帧缓存存储的是每个像素的色彩,即渲染后的图像。它常用在现存中,显存读取帧缓存中的数据,并将转换为CRT接收的合适信号。

双缓存技术是为了防止图像在未渲染完成时就显示,原理是:

提供两个帧缓存,其中一个帧缓存存放当前展示的图像数据(又称为显示缓存),另一个帧缓存存放下个需要展示的图像(又称为离线缓存),当渲染完成时切换帧缓存,有两种切换方案

  • 使用页切换技术,显存直接从离线缓存中读取数据
  • 将离线缓存复制到显示缓存中去展示

img.png

深度缓存

它不存储像素的颜色,而是存储像素的深度信息,深度信息有多种不同的变体,但基本上都在反应物体到摄像机的距离。

实践中,通常保存的是裁剪空间的z坐标,这也是z-buffer名称的由来

深度缓存一般用来计算物体之间的遮挡。在光栅化三角形时,计算各像素的插值深度。

INFO

在开始进行新的渲染之前,要设置z-buffer各值为无限远(在裁剪空间中,这个点为1.0),这样第一批像素才能通过深度测试。且一般不对z-buffr设置双缓存。