我的理解是,当使用GLSurfaceview时,每帧都会自动调用eglSwapBuffers,所以:
onDrawFrame()
{
//Your drawing code here
//system swaps buffers automatically
}
有什么方法我可以禁用这种行为并在每个onDrawFrame()的末尾自己/手动调用eglSwapBuffers或者在需要时将其压缩(即,当我想要它时让它运行但是停止它来自我需要时的运行。)
如果可能的话,如果有人能够解释如何在使用RENDERMODE_CONTINUOUSLY和&时解释如何实现这一目标,我将不胜感激。 RENDERMODE_WHEN_DIRTY
当然,我的理解可能是错的,所以请纠正我,如果是: - )
答案 0 :(得分:3)
GLSurfaceView
不是特别灵活。如果onDrawFrame
返回“do draw”布尔值,那就太好了;那么你在如何安排你的游戏循环方面会有更多的灵活性。但GLSurfaceView
不起作用,因此您的选择有限。
如果您想避免渲染每一帧,您有两种基本方法:
(1)使用RENDERMODE_WHEN_DIRTY
,只有当您知道在onDrawFrame
完成时才想要交换缓冲区时才请求渲染。如果您的游戏逻辑没有在渲染线程上运行并且您没有尝试以60fps运行,那么这就是您想要做的事情。
(2)下载GLSurfaceView
的来源,将其合并到您的应用中,然后将其修改为您想要的内容。