通过分析工具给出的 OpenGL API 使用性能警告列表,我发现我们每帧生成了几个逻辑缓冲区负载——在这些地方我们没有清除缓冲区,因为绘制调用完全覆盖了它。
与直觉相反,glClear()
为这些情况引入调用只是将警告的位置移动到glClear()
调用中。Apple 实现GL_EXT_discard_framebuffer
,但是单独使用它也不足以阻止警告。AglDiscardFramebufferEXT()
后跟 aglClear()
确实会停止警告,并显着提高性能,但glClear()
调用本身需要时间来清除缓冲区,这在我们的用例中是冗余操作。
其他人是否也发现他们需要调用这两个函数以避免重新加载成本,或者我错过了什么?是否有一种廉价的方式向 OpenGL 暗示帧缓冲区的内容即将被完全覆盖,因此不需要重新加载到 tile 内存中?