2011-02-17 59 views
0

我正在开发一个OpenGL ES项目,新手体育场,所以我得到了关于GLSurfaceView和Renderer实现的问题。 我有一个布局,其中包含FrameLayout中的GLSurfaceView,我用它来显示渲染的动画(动画渲染在我自己的渲染实现中)。在2个活动中重用GLsurfaceView

所有这些都发生在一个活动中。

然后我需要启动另一个活动,但要使用相同的视图和相同的渲染器,我尝试在新活动中创建新的GLSurfaceView(也在FrameLayoyt中,与第一个活动相同),但它崩溃了远。所以我认为我必须重用我在第一个活动中使用的GLSurfaceView和Renderer。

达到此目的的正确方法是什么?

回答

1

取读这个Android文档页面: GLSurfaceView

它说:

活动生命周期
当活动被暂停,重新恢复了GLSurfaceView必须通知。 GLSurfaceView客户端需要在活动暂停时调用onPause(),并在活动恢复时调用onResume()。这些调用允许GLSurfaceView暂停并恢复渲染线程,并允许GLSurfaceView释放并重新创建OpenGL显示。

因此,我建议你做到以下几点:

private GLSurfaceView mGlSurface; 

@Override 
protected void onResume() { 
    super.onResume(); 

    mGlSurface.onResume(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 

    mGlSurface.onPause(); 
} 

希望这有助于。

+0

这有助于。谢谢:) 无论如何,我想听听这是否是重用opengles机制的正确方法。 – user584513 2011-02-17 12:37:22