通过分析仪器给出的OpenGL API使用性能警告列表,我发现我们每帧产生几个逻辑缓冲区负载 - 我们没有清除缓冲区的地方,因为绘图调用完全覆盖它。iOS OpenGL ES逻辑缓冲区负载
违反直觉,引入glClear()
调用这些情况只是将警告的位置移动到glClear()
调用。苹果公司实施GL_EXT_discard_framebuffer
,但是单独使用它也不足以阻止警告。 A glDiscardFramebufferEXT()
后跟glClear()
会停止警告,并会显着提高性能,但glClear()
调用本身需要时间来清除缓冲区,这在我们的用例中是一个冗余操作。
其他人也发现他们需要调用这两个函数来避免重新加载成本或者我错过了什么?有没有一种便宜的OpenGL提示框架缓冲区的内容即将被完全覆盖,所以不需要重新加载到内存中?