Делаю обертку для родного 3д движка. и я использовал GLSurfaceView для установки контекста egl для моего движка.
Проблема в том, что когда GLSurfaceView теряет свой контекст egl (onPause и т. д.), я действительно хочу освободить память, используемую движком. Однако, кажется, нет никакого способа сделать это безопасно.
Я пытаюсь переопределить функцию onPause в GLSurfaceView, как показано ниже:
@Override
public void onPause(){
Engine.release();
super.onPause();
}
Однако это вызовет проблемы с памятью.
04-06 21:33:40.415: E/libEGL(8249): call to OpenGL ES API with no current context (logged once per thread)
04-06 21:33:40.425: A/libc(8249): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
Это может быть связано с тем, что память освобождена, но поток рендерера все еще работает.
Я думаю, что лучший способ сделать очистку — это освободить память в потоке рендерера непосредственно перед его завершением. Но я не знаю, как это реализовать.
Может ли кто-нибудь помочь мне?