我的渲染线程中有一个无限循环。我尝试测量假设每次调用eglSwapBuffers
都会绘制一个新帧,但这会给我200 fps的结果,这是不可能的,对吧?刷新率不能超过60?
现在我正在做同样的事情,但也使用SurfaceView的surfaceTexture的surfaceTexture.getTimeStamp()
。我认为只有在前一次迭代中返回的时间戳与当前时间不同时才绘制帧。这是一种可接受的衡量方式吗?当我不绘画时,这显示50-55fps。即循环只有eglSwapBuffers()
和getTimeStamp
次调用。
答案 0 :(得分:0)
surfaceTexture.getTimeStamp()
似乎正在给出正确的结果。我通过将连续getTimeStamp()
调用返回的结果之间的所有差异相加来测试它,它等于代码运行的总时间。这表明没有帧被忽视等等。
我发现的另一个解决方案是this Android app。我不知道它是如何工作的,但它提供的结果与上述方法大致相同。