我们正在探究为什么iPhone 4和iPad 1的FPS相对较慢。我们在OpenGL分析中看到了这个警告类别:逻辑缓冲区加载。总结是“缓慢的帧缓冲区加载”。建议说,在渲染之前必须由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];
dFdx()
或其他导数函数吗? - Brad LarsonGL_DEPTH_BUFFER_BIT
吗?也许分析器只考虑了glClear
调用而没有考虑glDiscard
调用。在这种情况下,警告可能并不严格与性能相关。 - Pietro Saccardi