Как фиксировать OpenGL сбои приложения ES при перемещении в фон
Q: Мой OpenGL сбои приложения ES при перемещении в фон. Как я фиксирую его?
A: Если Ваш OpenGL сбои приложения ES при перемещении в фон, и Вы получаете отчет катастрофического отказа, содержащий отслеживание стека, заканчивающееся libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient + 0 как показано в Перечислении 1, это указывает, что приложение попыталось сделать рендеринг с OpenGL ES в фоновом режиме.
Отслеживание стека перечисления 1
Thread 0 name: Dispatch queue: com.apple.main-thread |
Thread 0 Crashed: |
0 libGPUSupportMercury.dylib 0x30570094 gpus_ReturnNotPermittedKillClient + 0 |
1 libGPUSupportMercury.dylib 0x305700ae gpus_KillClient ( ) |
2 libGPUSupportMercury.dylib 0x305705ba gpusSubmitDMABuffers ( ) |
3 IMGSGX535GLDriver 0x34bd29b8 SubmitPacketsIfAny ( ) |
4 IMGSGX535GLDriver 0x34bd2ad0 glrFlushContextToken ( ) |
5 GLEngine 0x37719c4a gliPresentViewES ( ) |
6 OpenGLES 0x323df6b4 -[EAGLContext presentRenderbuffer:] ( ) |
... |
... |
Приложение ES OpenGL будет завершено, если оно попытается выполнить команды OpenGL ES в фоновом режиме. Ваше приложение должно гарантировать, что все ранее представленные команды были закончены и затем прекращают представлять до перемещения в фоне. Посмотрите подробные данные о том, как достигнуть этого в Реализации Многозадачно-осведомленного OpenGL глава Приложения ES OpenGL Руководство по программированию ES для iOS.
Посмотрите Отладку Развернутые приложения для iOS для получения информации о том, как получить отчет катастрофического отказа.
История версии документа
| Дата | Примечания |
|---|---|
| 09.04.2012 | Новый документ, описывающий, как фиксировать OpenGL сбои приложения ES при перемещении в фон. |