我真的在这里挣扎,而且它阻碍了我。
处理OpenGL的正确方法是什么,以及活动 - 启动子活动或返回主屏幕。让它恢复到原来的位置。
我现在半工作,纹理/ VBO在需要时在onResume()重新加载。
但有时,当启动子活动并返回,或进入主屏幕并返回时,onCreate将再次被触发。这弄乱了整个事情,我最终得到了黑屏。
我确信我做错了。有人可以解释一个人应该如何处理这样的活动吗?
答案 0 :(得分:1)
您在使用什么平台?
我问的原因是,在Eclair之前,整个区域都充满了漏洞,导致暂停/恢复OpenGL基本上只是意外工作。然而,这些确实似乎已被Eclair修复,我们的应用程序似乎相当可靠地暂停和恢复。
你所想做的要做的是向SurfaceHolder注册一个回调,以便在曲面出现和消失时得到通知。在surfaceDestroyed()方法中,您完全关闭EGL,然后在您的surfaceCreated()方法中重新初始化它。您不应该使用Activity的onCreate()/ onResume()方法执行任何操作,因为曲面可能不会同时出现和消失。
那就是说,我们的应用程序是为Cupcake设计的,当时事情非常原始。我认为现在有一些实用工具可以为你做所有繁重的工作,所以如果你使用其中一件可能会有不同的工作;如果你不是,你可能想要研究它们。