2个Android OpenGL GLSurfaceView活动之间的平滑过渡

时间:2012-11-12 23:55:00

标签: android opengl-es android-activity glsurfaceview

我有2 Activitiy个使用OpenGL进行绘制。在从一个活动到下一个活动的过渡期间,我得到一个难看的空白屏幕,其中填充了OpenGL清晰的颜色(因此它没有黑屏那么糟糕)。

我希望在Activity之间有效地进行无缝转换,但在创建GLSurfaceView时有几个高负载区域。主要问题是纹理加载,因为这是最慢的。

是否有Activity之间的双缓冲区,以便冻结上一个Activity视图,直到我明确告诉下一个Activity绘制?我希望过渡是无缝的?

将所有内容移动到一个GLSurfaceView实例中并不是我想要考虑的选项。

2 个答案:

答案 0 :(得分:0)

您可以在GLSurfaceView中使用setRenderMode( RENDERMODE_WHEN_DIRTY),因此只有在您拨打requestRender()时才会重绘表面。
这样,您在调用另一个表面视图之前绘制的任何内容只有在您请求新绘制时才会被清除 您可以通过将渲染模式设置为RENDERMODE_CONTINUOUSLY来返回连续绘图。

答案 1 :(得分:0)

由于其OpenGL ES,在Android 2.x中很难做到这一点。此外,如果您不断渲染,建议您不要在一个应用程序中使用两个OpenGL。如果是这样,要轻松控制它们,您将需要RENDERMODE_WHEN_DIRTY。

如果您在Android 4.x中使用它,可以选择使用TextureView。

TextureView与GLSurfaceView相同,但与View兼容,这意味着您可以将ViewAnimation用于TextureView。