Front、Back 和其他缓冲区

OpenGL 在帧缓冲区中存储和操作像素数据。 帧缓冲区由一组逻辑缓冲区组成:颜色、深度、累积和模具缓冲区。 颜色缓冲区本身由一组逻辑缓冲区组成;此集可以包括前左、右前、左后、右后和一些辅助缓冲区。 特定的像素格式或 OpenGL 实现可能无法提供所有这些缓冲区。 例如,Microsoft 在 Windows 中实现 OpenGL 的当前版本不支持立体图像,因此像素格式不能有左右颜色缓冲区。 此外,当前版本不支持辅助缓冲区。 有关 OpenGL 缓冲区及其上运行的 OpenGL 函数的详细信息,请参阅 OpenGL 参考手册OpenGL 编程指南

Microsoft 在 Windows 中对 OpenGL 的实现支持对图像进行双重缓冲。 这是一种技术,应用程序将像素绘制到屏幕外缓冲区,然后在图像准备好显示时,将屏幕外缓冲区的内容复制到屏幕缓冲区。 双缓冲可实现平滑图像更改,这对于动画图像尤其重要。

使用双缓冲的应用程序可以使用两个颜色缓冲区:一个前缓冲区和一个后缓冲区。 默认情况下,绘图命令将定向到后台缓冲区, (屏幕外缓冲区) ,而前缓冲区显示在屏幕上。 当屏幕外缓冲区准备好显示时,调用 SwapBuffers,Windows将屏幕外缓冲区的内容复制到屏幕缓冲区。

泛型实现使用独立于设备的位图 (DIB) 作为后缓冲区,屏幕显示为前缓冲区。 硬件设备及其驱动程序可能使用不同的方法。

双缓冲是像素格式属性。 若要请求像素格式的双重缓冲,请在调用 ChoosePixelFormatPIXELFORMATDESCRIPTOR 数据结构中设置PFD_DOUBLEBUFFER标志。

OpenGL 核心函数 glDrawBuffer 选择用于写入和清除的缓冲区。

缓冲区函数