3

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

onDrawFrame()
{

//Your drawing code here

//system swaps buffers automatically

}

有什么办法可以禁用此行为并在每个 onDrawFrame() 结束时自己/手动调用 eglSwapBuffers 或在需要时抑制它(即,让它在我想要的时候运行但停止运行当我需要时)。

如果可能的话,如果有人能解释在同时使用 RENDERMODE_CONTINUOUSLY 和 RENDERMODE_WHEN_DIRTY 时如何实现(如果可能),我将不胜感激

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

4

1 回答 1

3

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

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

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

(2) 下载 的源代码GLSurfaceView,将其合并到您的应用程序中,然后对其进行修改以执行您想要的操作。

于 2013-05-08T17:57:36.717 回答