2

我应该在 NDK 应用程序事件生命周期的哪个阶段释放我的所有 OpenGLES 资源?

这主要包括 OpenGLES VBO 和纹理。

细节:

我在APP_CMD_PAUSE或中发布APP_CMD_TERM_WINDOW

我正在注销以下每个应用程序事件,以确保我顺利退出,并且在执行此操作时我似乎丢失了APP_CMD_STOP。我似乎也没有顺利退出 Looper 和应用程序。

我对此没有任何明显的副作用,但是在我看来,应用程序已正确关闭,但是当我提前释放资源时,应用程序生命周期的最后阶段并未注销。我担心这意味着该应用程序无法顺利关闭。

欢迎对此作出澄清。

4

1 回答 1

0

未能释放资源不应阻止您看到 APP_CMD_STOP。如果你只是注释掉发布代码,你得到命令了吗?

您应该在 APP_CMD_TERM_WINDOW 中释放窗口 EGLSurface,如果您获得 APP_CMD_INIT_WINDOW,则重新创建它。不要忘记这两个地方的 eglMakeCurrent 调用。

当您在后台时,您可以保留 EGLContext 和所有 GL 对象/数据,以便在用户很快返回您的应用程序时快速恢复。如果您获得 APP_CMD_LOW_MEMORY 或在退出期间 (android_app::destroyRequested==1),您应该释放它们。

于 2013-10-22T18:11:09.447 回答