Apple's Technical Q&A on addressing flickering (QA1650)包含以下段落。 (强调我的。)
您必须为屏幕上的每个像素提供颜色。在绘图代码的开头,最好使用glClear()初始化颜色缓冲区。在帧开始时全屏清除每个颜色,深度和模板缓冲区(如果正在使用它们的话)通常也可以改善应用程序的性能。
在其他平台上,如果您要绘制到每个像素,我总是发现它是一种不清除颜色缓冲区的优化。 (如果您只是要覆盖该清晰的颜色,为什么要浪费时间填充颜色缓冲区?)
调用glClear()如何提高性能?
最佳答案
这很可能与基于图块的渲染有关,该渲染将整个视口(viewport)划分为图块(较小的窗口,通常大小为32x32),并将这些图块保存在更快的内存中。在较小的内存和实际帧缓冲区之间进行复制操作可能会花费一些时间(内存操作比算术操作要慢得多)。通过发出glClear命令,您告诉硬件您不需要以前的缓冲区内容,因此它不需要将颜色/深度/任何内容从帧缓冲区复制到较小的切片内存中。