Moja aplikacja to OpenGL, mocno wykorzystywana, używana do przetwarzania obrazów, renderowania scen, podglądów itp. Jednak po wdrożeniu wielu zadań jako oficjalnego dokumentu firmy Apple "Podręcznik programowania OpenGL ES dla iOS", dziwne awarie wciąż pojawiały się sporadycznie. Debug Navigator ślad stosu pokazuje coś jak „sgxPatchDeferredFramebufferOffsets”, „presentRenderbuffer EXC_BAD_ACCESS”, „gpus_ReturnNotPermittedKillClient” itpAplikacja OpenGL ES ulega awarii po zablokowaniu ekranu lub wprowadzeniu tła
Więc chciałbym wiedzieć, co dokładnie należy wdrożyć OpenGL ES wielozadaniowych.
============= UPDATE: Problem rozwiązany ============
Dzięki za odpowiedź, CStreel i innych facetów, którzy próbował pomóc.
Po przeczytaniu "Aplikacje w tle mogą nie wykonywać poleceń w sprzęcie graficznym" w "Podręczniku programowania ES dla systemu iOS" po raz drugi, linia po linii, mam nowe zrozumienie tego problemu.
Duży problem z moją aplikacją to: I nie powinien implementować wielozadaniowego OpenGL ES w metodzie powiadamiania. Ponieważ, w przeciwieństwie do metod delegowania, metody powiadomień będą nazywane asynchronicznie, te zatrzymujące akcje animacji i wywołania glFinish() mogą nie zadziałać, gdy aplikacja zostanie już przeniesiona w tło. Może się to zdarzyć częściej, gdy kliknę przycisk blokady ekranu, gdy wykonuję serię akcji związanych z OpenGL ES.
Jeśli znalazłeś inne problemy, skontaktuj się ze mną.
Problem występuje, jeśli wywołasz OpenGL ES z kolejki szeregowej w tle. Nawet po powiedzeniu stoperowi, aby przestał strzelać, blok kończy się i może spowodować awarię. http://stackoverflow.com/questions/19215554/how-to-stop-opengl-drawing-when-calling-opengl-from-background – openfrog