Android openGL - Поверхность недействительна Поверхность - PullRequest
1 голос
/ 27 марта 2012

Иногда, когда я закрываю свое приложение openGL ES 1, следующие сообщения об ошибках продолжают публиковаться в logcat, и приложение зависает, и в какой-то момент оно закрывается.

E/EglHelper(4284): Surface is not valid Surface(name=null, identity=-1, mNativeSurface=0) java.lang.IllegalArgumentException: Make sure the SurfaceView or associated SurfaceHolder has a valid Surface
E/GLThread(4284): Couldn't create a surface 132184
W/GLThread(4284): egl createSurface
W/EglHelper(4284): createSurface()  tid=22

где может быть моя проблема?

1 Ответ

1 голос
/ 22 августа 2012

Одна вещь, которую вы должны проверить, чтобы увидеть, если вы еще не решили эту проблему, это сравнить то, что вы делаете в ваших обратных вызовах Activity onPause / onDestroy, с тем, что вы делаете в обратном вызове surfaceDestroyed. Если вы используете GLSurfaceView или другой стандартный SurfaceView для ручного управления OpenGL, вы гарантированно получите действительную поверхность, начинающуюся только при вызове обратного вызова surfaceCreated, и заканчивающуюся при вызове surfaceDestroyed. Поэтому, если это происходит при выходе из приложения, вы должны увидеть, пытаетесь ли вы манипулировать поверхностью после того, как она уже уничтожена.

Еще одна вещь, которую следует учитывать, это то, что ваши записи logcat выглядят так, как будто исключение было сгенерировано при попытке вызвать eglCreateWindowSurface (), поэтому вам может потребоваться выяснить, почему вы пытаетесь создать новую поверхность рисования OpenGL при выходе из приложения.

...