Android eglSwapBuffers - 手动控制? (安卓)

问题描述:

我的理解是,eglSwapBuffers被称为使用GLSurfaceview时自动每一帧,所以:Android eglSwapBuffers - 手动控制? (安卓)

onDrawFrame() 
{ 

//Your drawing code here 

//system swaps buffers automatically 

} 

有没有什么办法可言,我可以在手动禁用此行为,并呼吁eglSwapBuffers自己/每个onDrawFrame()结束或在我需要的时候压缩它(例如,让它在我需要时运行,但在需要时停止运行)。

如果可能的话,我会很感激,如果有人可以解释如何能同时使用RENDERMODE_CONTINUOUSLY & RENDERMODE_WHEN_DIRTY

当然,我的理解可能有误时可实现(如果可能的话),所以请纠正我,如果它是:-)

GLSurfaceView不是特别灵活。如果返回“do draw”布尔值,那将会很好;那么你在安排游戏循环的过程中会有更多的灵活性。 GLSurfaceView不会这样工作,但是,所以你的选择是有限的。

你有两种基本方法,如果你想避免渲染每一帧:

(1)使用RENDERMODE_WHEN_DIRTY,并且只要求当你知道你将要当交换缓冲完成渲染。如果你的游戏逻辑没有在渲染线程上运行,并且你不想以60fps运行,那么这就是你想要做的事情。

(2)下载GLSurfaceView的源代码,将它合并到您的应用程序中,然后修改它以执行所需操作。

+0

感谢@fadden此刻我只是在使用RENDERMODE_CONTINUOUSLY,虽然我喜欢修改GLSurfaceView的想法,这可能是我未来研究的内容。干杯。 – Zippy 2014-08-29 20:02:47

+1

另外值得一看:https://source.android.com/devices/graphics/architecture.html#loops – fadden 2014-08-30 04:41:18

+0

有趣的是,Android游戏循环中的一篇'官方'文章,从未见过之前,我将阅读 - 很好找! – Zippy 2014-08-31 19:16:38