【问题标题】:Correct point to release OpenGLES Resources Android NDK正确点发布 OpenGLES Resources Android NDK
【发布时间】:2013-04-29 10:54:56
【问题描述】:

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

这主要包括 OpenGLES VBO 和纹理。

详情:

我在APP_CMD_PAUSEAPP_CMD_TERM_WINDOW 发布。

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

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

欢迎对此进行澄清。

【问题讨论】:

    标签: android opengl-es android-ndk


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2014-08-17
      • 2020-10-13
      相关资源
      最近更新 更多