【发布时间】:2025-12-25 08:30:06
【问题描述】:
Apple's Technical Q&A on addressing flickering (QA1650) 包括以下段落。 (强调我的。)
您必须为屏幕上的每个像素提供一种颜色。在绘图代码的开头,最好使用 glClear() 来初始化颜色缓冲区。在帧开始时全屏清除每个颜色、深度和模板缓冲区(如果您正在使用它们)通常也可以提高您的应用程序的性能。
在其他平台上,我一直发现它是一种优化,如果您要绘制到每个像素,不清除颜色缓冲区。 (如果您只是要覆盖清晰的颜色,为什么要浪费时间填充颜色缓冲区?)
调用 glClear() 如何提高性能?
【问题讨论】:
-
多年来,忽略清除颜色/深度/模板缓冲区的性能优化并非如此。正如我在其他答案中的一些 cmets 中所解释的,它与现代 GPU 中的缓冲区压缩有关。通过现代 GPU,我可以追溯到 Radeon 9xxx 系列。清除这些缓冲区实际上是对几乎所有 GPU 架构的性能提升。