正确的点发布OpenGLES资源Android NDK

时间:2013-04-29 10:54:56

标签: android opengl-es android-ndk

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

这主要包括OpenGLES VBO和纹理。

详情:

我在APP_CMD_PAUSEAPP_CMD_TERM_WINDOW中发布。

我正在注销每个以下的应用事件,以确保我顺利退出并且这样做我似乎缺少APP_CMD_STOP。我似乎也没有顺利退出looper和app。

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

对此的一些澄清将受到欢迎。

1 个答案:

答案 0 :(得分:0)

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

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

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