#c #ios #opengl-es
#c #iOS #opengl-es
Вопрос:
В нашей игре мы используем OpenGL для рендеринга. Иногда приложение случайно вылетает сразу после запуска при первом вызове этого метода:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Мы вызываем этот метод перед рендерингом игровой сцены.
Вот трассировка стека сбоя:
0 Crashed: com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x000000a4
0 IMGSGX543GLDriver sgxTextureGetImageRowBytes(GLDTextureRec*, unsigned int, unsigned int) 7
1 IMGSGX543GLDriver CalculateChunkPlaneSizes(GLDTextureRec*, int, unsigned int*, unsigned int*, unsigned int*, unsigned int*) 108
2 IMGSGX543GLDriver CalculateChunkPlaneSizes(GLDTextureRec*, int, unsigned int*, unsigned int*, unsigned int*, unsigned int*) 108
3 IMGSGX543GLDriver sgxConfigureTexturePrivate(GLDTextureRec*) 82
4 IMGSGX543GLDriver glrUpdateTexture 952
5 libGPUSupportMercury.dylib gldLoadFramebuffer 110
6 GLEngine gleUpdateDrawFramebufferState
7 GLEngine glClear_Exec 164
Мы понятия не имеем, почему может возникнуть этот сбой.
Кто-нибудь сталкивался с подобной проблемой?
Спасибо за помощь.
Комментарии:
1. вы пробовали размещать сообщения на powervr и форуме разработчиков Apple? у меня были некоторые проблемы с ios, которые давали мне контекст, который был «еще не готов», который я так и не решил… мне пришлось перенести некоторую логику с выполнения только в первом кадре на выполнение каждого кадра.
2. @racarate, спасибо за совет, я задам этот вопрос там. Кстати, я вызываю
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
каждый кадр. Может быть, мне следует пропустить первый кадр и попытаться вызвать методы рендеринга в следующем кадре? Что вы думаете?3. Привет, Сергей, ты это как-то исправил? У меня такая же проблема.
4. @SuleaCosmin, пока нет, все еще не могу понять причину этой проблемы.
5. @Sergey … это зависит от устройства