1.2.2、帧缓存
GPU需要知道应该在内存中的哪个位置存储渲染出来的2D图像像素数据。就像为GPU提供数据的缓存一样,接收渲染结果的缓冲区叫做帧缓存(framebuffer)。程序会像任何其他种类的缓存一样生成、绑定、删除帧缓存。但是帧缓存不需要初始 化,因为渲染指令会在适当的时候替换缓存的内容。帧缓存会在被绑定的时候隐式开启,同时OpenGLES会自动地根据特定平台的硬件配置和功能来设置数据的类型和偏移。
可以同时存在很多帧缓存,并且可以通过OpenGLES让GPU把渲染结果存储到任意数量的帧缓存中。但是,屏幕显示像素要受到保存在前帧缓存(frontframebuffer)的特定帧缓存中的像素颜色元素的控制。程序和操作系统很少会直接渲染到前帧缓存中,因为那样会让用户看到正在渲染中的还没渲染完成的图像。相反,程序和操作系统会把渲染结果保存到包括后帧缓存(back frame buffer) 在内的其他帧缓存中。当渲染 后的后帧缓存包含一个完成的图像时,前帧缓存与后帧缓存几乎会瞬间切换。后帧缓存会变成新的前帧缓存,同时旧的前帧缓存会变成后帧缓存。图1-5展示了屏幕显示像素、前帧缓存及后帧缓存三者之间的关系。

图 1-5