Android:从其他线程访问OpenGL

时间:2015-04-21 00:11:54

标签: android c++ opengl-es-2.0

我在Android上使用NDK for OpenGL,我正试图在应用程序失去焦点时解决与GL相关的怪癖。我知道我可以设置一个标志告诉系统我想保留上下文,但那是不可靠的。

我已将其设置为从文件重新加载着色器并在应用程序恢复时从本地内存重新上载顶点数据,但纹理导致我出现一些问题。我设置了我的代码来从onPause中的GL中拉出纹理,然后在创建新的上下文时将它们推回。之后我意识到它不起作用,因为我试图在不同的线程上访问GL数据。

有没有可靠的黑客可以让我在这里访问GL数据?或者甚至将上下文切换到另一个线程?

作为此问题的扩展,是否有任何方法在上下文被销毁之前得到通知?所以我绝对需要时才需要这样做?

1 个答案:

答案 0 :(得分:0)

我最终做的是设置一个布尔值来告诉GL线程它将被放入后台。然后我让onMause线程暂停5ms,直到GL线程表明它已经完成。

不是很优雅,应用程序没有过渡,但它确实有效。