Android eglSwapBuffers - 手动控制? (机器人)

时间:2013-05-06 13:36:09

标签: android rendering buffer opengl-es-2.0 game-loop

我的理解是,当使用GLSurfaceview时,每帧都会自动调用eglSwapBuffers,所以:

onDrawFrame()
{

//Your drawing code here

//system swaps buffers automatically

}

有什么方法我可以禁用这种行为并在每个onDrawFrame()的末尾自己/手动调用eglSwapBuffers或者在需要时将其压缩(即,当我想要它时让它运行但是停止它来自我需要时的运行。)

如果可能的话,如果有人能够解释如何在使用RENDERMODE_CONTINUOUSLY和&时解释如何实现这一目标,我将不胜感激。 RENDERMODE_WHEN_DIRTY

当然,我的理解可能是错的,所以请纠正我,如果是: - )

1 个答案:

答案 0 :(得分:3)

GLSurfaceView不是特别灵活。如果onDrawFrame返回“do draw”布尔值,那就太好了;那么你在如何安排你的游戏循环方面会有更多的灵活性。但GLSurfaceView不起作用,因此您的选择有限。

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

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

(2)下载GLSurfaceView的来源,将其合并到您的应用中,然后将其修改为您想要的内容。