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
的源代码,将它合并到您的应用程序中,然后修改它以执行所需操作。
感谢@fadden此刻我只是在使用RENDERMODE_CONTINUOUSLY,虽然我喜欢修改GLSurfaceView的想法,这可能是我未来研究的内容。干杯。 – Zippy 2014-08-29 20:02:47
另外值得一看:https://source.android.com/devices/graphics/architecture.html#loops – fadden 2014-08-30 04:41:18
有趣的是,Android游戏循环中的一篇'官方'文章,从未见过之前,我将阅读 - 很好找! – Zippy 2014-08-31 19:16:38