iOS OpenGL ES-Bildschirmrotation, während Hintergrund-Apps sichtbar sind
Meine App verwendetGLKit
3D Szene rendern mitOpenGL ES
.
Alles funktioniert gut, bis auf eine Sache. Wenn ich meine App auf dem iPad starte und die Hintergrund-App-Leiste anzeige (mit einem Doppelklick auf die Schaltfläche "Home") und dann die Ausrichtung des Geräts ändere, wird die Szene falsch aktualisiert (das zuletzt gerenderte Bild wird einfach gestreckt, um ein neues Rechteck zu füllen).
Ich habe den Grund gefunden. Wenn die Hintergrund-App-Leiste angezeigt wird,GLKViewController's
paused
ist eingestellt aufYES
automatisch (Anwendungsdelegierter erhält-applicationWillResignActive:
) und kein Rendern erfolgt, bis diese Leiste geschlossen wird.
Ich habe in Apple-Handbüchern gefunden (OpenGL ES-Programmierhandbuch für iOS / Implementieren einer Multitasking-fähigen OpenGL ES-Anwendung) dass nach Erhalt-applicationWillResignActive:
Die Anwendung sollte das Rendern des Hauptbuchs stoppen oder wird beendet. Es scheint also alles in Ordnung zu sein, außer schlechtem Rendering nach dem Drehen :)
Ich habe einige OpenGL-Spiele überprüft. Sie wurden auch "pausiert", als dieser Balken angezeigt wurde, aktualisierten jedoch die pausierte Szene bei der Gerätedrehung irgendwie korrekt. Wie erreichen sie das?