我们试图弄清楚为什么我们在 iphone 4 和 ipad 1 上的 FPS 相对较慢。我们在我们的开放式 GL 分析:逻辑缓冲区负载中看到了这种警告类别。摘要是“缓慢的帧缓冲区加载”。建议说帧缓冲区必须在渲染之前由 GPU 加载。它建议我们在每一帧的开头都没有执行全屏清除操作。但是,我们使用 glClear 来执行此操作。
[EAGLContext setCurrentContext:_context];
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glClear(GL_COLOR_BUFFER_BIT);
// Our OpenGL Drawing Occurs here
…………
// hint to opengl to not bother with this buffer
const GLenum discards[] = {GL_DEPTH_ATTACHMENT};
glBindFramebuffer(GL_FRAMEBUFFER, _defaultFramebuffer);
glDiscardFramebufferEXT(GL_FRAMEBUFFER, 1, discards);
// present render
[_context presentRenderbuffer:GL_RENDERBUFFER];
我们实际上并没有使用深度或模板缓冲区。
当我们将纹理渲染为瓦片时会发生这种情况,并且每次加载新瓦片时都会发生这种情况。它指向我们的 glDrawArrays 命令。
关于我们如何摆脱这个警告的任何建议?
如果它有帮助,这就是我们设置图层的方式:
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat,
nil];