Wir versuchen herauszufinden, warum wir eine relativ langsame FPS auf iphone 4 und ipad 1 haben. Wir sehen diese Kategorie der Warnung in unserer offenen GL-Analyse: Logical Buffer Load. Die Zusammenfassung lautet "Slow framebuffer load". Die Empfehlung besagt, dass der Framebuffer vor dem Rendern von der GPU geladen werden muss. Es wird empfohlen, dass wir zu Beginn eines jeden Frames keinen Vollbild-Löschvorgang durchführen. Wir machen dies jedoch mit glClear.logischer Puffer laden - langsamer Framebuffer laden - ios
[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];
Wir sind eigentlich keine Tiefe oder Schablonenpuffer.
Dies passiert, wenn wir Texturen als Kacheln rendern und es jedes Mal passiert, wenn wir eine neue Kachel laden. Es zeigt auf unseren Befehl glDrawArrays.
Irgendwelche Empfehlungen, wie wir diese Warnung loswerden können?
Wenn es überhaupt hilft, das ist, wie wir die Ebene einrichten:
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGB565, kEAGLDrawablePropertyColorFormat,
nil];
Ich sollte beachten, dass während der Analysator diese Punkte als ein Punkt der Optimierung aus, in meiner Erfahrung eine ziemlich geringfügige es war. Odds sind, es hat wenig damit zu tun, warum Ihre Anwendung langsam rendert. Sehen Sie sich den OpenGL ES Driver an und sehen Sie, ob Sie den Renderer (fragment limited) oder den Tiler (geometry limited) ausreizen. –
Wir haben die OpenGL-ES-Instrumentierung ausgeführt und es scheint, dass wir die Füllrate (Fragmente) maximieren. Wir rendern nur 256x256 Kacheln, die den sichtbaren Bereich ausfüllen. Gibt es irgendwelche Apple-spezifischen Erweiterungen, die wir betrachten müssen, ob das die Erstellung der Texturen oder die Art, wie wir die Texturen einrichten, oder ein anderer Zweck? – user1687195
Als Update hierfür setzen wir glHint (GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES, GL_FASTEST); Und das scheint mit FPS ziemlich geholfen zu haben. – user1687195