iphone - glClear() 如何提高性能?

标签 iphone opengl-es

Apple's Technical Q&A on addressing flickering (QA1650)包括以下段落。 (强调我的。)

您必须为屏幕上的每个像素提供一种颜色。在绘图代码开始时,最好使用 glClear() 来初始化颜色缓冲区。在帧开始时全屏清除每种颜色、深度和模板缓冲区(如果您正在使用它们)通常也可以提高应用程序的性能。

在其他平台上,我一直发现如果您要绘制每个像素,则清除颜色缓冲区是一种优化。 (如果您只是要覆盖清晰的颜色,为什么还要浪费时间填充颜色缓冲区呢?)

调用 glClear() 如何提高性能?

最佳答案

它很可能与基于图 block 的渲染有关,它将整个视口(viewport)划分为图 block (较小的窗口,通常大小为 32x32),并且这些图 block 保存在更快的内存中。这个较小的内存和真实帧缓冲区之间的复制操作可能需要一些时间(内存操作比算术操作慢很多)。通过发出 glClear 命令,您可以告诉硬件您不需要以前的缓冲区内容,因此不需要将颜色/深度/任何内容从帧缓冲区复制到较小的图 block 内存。

关于iphone - glClear() 如何提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2538662/

相关文章:

iphone - 自定义 Nib UITableViewCell 高度

c# - 如何删除 CollectionView IOS 中行之间的额外行间距?

ios - 启动时自定义 View Controller

android - 10 秒后 Android 上 OpenGL ES 的 CPU 使用率大幅增加

android - 通过找到将以60fps和30fps运行的最佳设置来摆脱性能设置旋钮

iphone - AFNetworking 检查进度

iphone - SQLite ANALYZE 破坏索引

ios - ARKit,用于 ARSCNView 的金属着色器

ipad - 使用 WhirlyGlobeComponet 在地球上创建纬度线时出现问题

android - ZTE Android 版本 4.0.4 上的着色器损坏