Obrót ekranu iGL OpenGL ES, gdy widoczny jest pasek aplikacji w tle
Moja aplikacja korzystaGLKit
do renderowania sceny 3D za pomocąOpenGL ES
.
Wszystko działa dobrze, z wyjątkiem jednej rzeczy. Po uruchomieniu aplikacji na iPadzie i pasku aplikacji w tle wyświetlacza (po dwukrotnym kliknięciu przycisku „Dom”), a następnie zmianie orientacji urządzenia, scena jest nieprawidłowo aktualizowana (ostatni renderowany obraz jest po prostu rozciągany, aby wypełnić nowy prostokąt).
Znalazłem powód. Gdy pojawi się pasek aplikacji w tle,GLKViewController's
paused
jest ustawione naYES
automatycznie (delegat aplikacji otrzymuje-applicationWillResignActive:
) i żadne renderowanie nie nastąpi, dopóki ten pasek nie zostanie zamknięty.
Znalazłem w przewodnikach Apple (Podręcznik programowania OpenGL ES dla iOS / Wdrażanie aplikacji OpenGL ES obsługującej wielozadaniowość) że po otrzymaniu-applicationWillResignActive:
aplikacja powinna zatrzymać renderowanie GL lub zostanie zakończona. Wygląda więc na to, że wszystko jest w porządku, z wyjątkiem złego renderowania po obrocie :)
Sprawdziłem niektóre gry OpenGL. Stały się także „wstrzymane”, gdy wyświetlany był ten pasek, ale w jakiś sposób poprawnie aktualizowały wstrzymaną scenę podczas obracania urządzenia. Jak to osiągnąć?