'onDraw()'调用之间的OpenGL ES大延迟

时间:2012-03-12 01:27:16

标签: android opengl-es

我正在使用openGL ES创建一个动态壁纸,我遇到了让壁纸保持在30fps以上的麻烦。

我注意到的一件事是,如果我完全清空我的onDraw()方法(除了一些时序代码),onDraw()方法只在设置了渲染模式时每隔~11ms调用一次'连续'。

这看起来有点奇怪。特别是当我添加一些多边形和纹理时,代码在帧之间只需要几个额外的ms。

我的代码:

public void onDrawFrame(GL10 gl) {          
    long endTime = System.currentTimeMillis();
    long dt = endTime - startTime;              
    Log.v("time",Long.toString(dt));
    startTime = System.currentTimeMillis(); 
}  

这是正常行为吗?也许幕后会发生一些事情。

我已尝试搞乱我的设置代码,但它似乎没有改变任何东西

traceView 似乎表明,使用EGLImpl.eglSwapBuffers cpu / call,0.633似乎占用了大约45%的执行时间。上面显示的代码大约占25%,下一个最高条目是Thread.sleep()

编辑 - 我认为交换缓冲区与显示刷新率同步,这可以解释我所看到的内容。

0 个答案:

没有答案