我正在一个新手体育场的OpenGL ES项目中工作,所以我遇到了有关GLSurfaceView和Renderer实现的问题。
我有一个在FrameLayout中包含GLSurfaceView的布局,该布局用于显示渲染的动画(动画是在我自己的Renderer实现中渲染的)。

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

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

实现此目标的正确方法是什么?

最佳答案

阅读此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();
}


希望能有所帮助。

关于java - 在2个 Activity 中重用GLsurfaceView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5027358/

10-12 02:44