找到答案

here,这个“LemonDev”确实拯救了我的生命:

可以停止/销毁OpenGL表面视图,并通过调用OnPause()将新的GLSurfaceView设置为新的渲染器,并使用Handler和Runnable postDelayed destroy,如下所示:

final Renderer newRender = new GRenderer(this);

final LinearLayout ll = (LinearLayout) this.findViewById(R.id.main);

graphicView.onPause();

Handler handler = new Handler();

class RefreshRunnable implements Runnable{

public RefreshRunnable(){

}

public void run(){

ll.removeView(findViewById(R.id.graphicView));

GLSurfaceView surfaceview = new GLSurfaceView(getApplication());

surfaceview.setId(R.id.graphicView);

surfaceview.setRenderer(newRender);

ll.addView(surfaceview);

graphicView = (GLSurfaceView) findViewById(R.id.graphicView);

}

};

RefreshRunnable r = new RefreshRunnable(this);

handler.postDelayed(r, 500);

这将创建一个新的渲染器并暂停GLSurfaceView.然后应用程序将“销毁”一些你无法用SDK接触的内部东西……之后,你可以销毁GLSurfaceView,创建另一个并为其设置新的渲染器.

我现在的问题是纹理还没有刷新,但是,这仍然很棒!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐