Android OpenGL ES 2.0 Framerate上限?

时间:2014-06-23 15:55:16

标签: android opengl-es opengl-es-2.0 frame-rate

我正在使用OpenGL ES 2.0为Android开发应用程序。我正在使用LG Optimus 5手机进行测试。

我创建了一个GLSurfaceView,我将其渲染器的方法调用onDrawFrame(GL10 gl)来在屏幕上显示图像。我还在onDrawFrame中更新应用程序的逻辑并睡眠以达到60FPS。

代码如下所示:

public void onDrawFrame(GL10 gl) {
//Sleep 16-17ms to achieve 60FPS
//Update
//Render
}

我注意到的一件事是我不需要在onDrawFrame中睡觉;显然我手机的屏幕刷新率是60hz,因此Android将帧率提高到60fps。

所以我想知道,在使用OpenGL ES 2.0时,Android总是将帧速率限制为刷新率吗?

我想要获得手机的刷新率,如果不是60就不要打电话给睡眠方法;如果它更高,则调用它将帧速率限制为60fps。

如果手机的刷新率低于60fps会怎样?

1 个答案:

答案 0 :(得分:0)

您可能尝试类似我的方法,但过度使用您想要做的事情,然后减少负载以达到60 FPS。

http://www.roylongbottom.org.uk/android%20graphics%20benchmarks.htm

示例结果:

 *****************************************************
 T7 Nexus 7 Quad 1300 MHz Cortex-A9, Android 4.1.2
   nVidia ULP GeForce Graphics 12 core, 416 MHz

 Android Java OpenGL Benchmark 06-Mar-2013 21.51

           --------- Frames Per Second --------
 Triangles WireFrame   Shaded  Shaded+ Textured

   9000+      42.18    43.57    33.38    23.54
  18000+      23.68    23.47    19.91    13.38
  36000+      12.05    11.95    11.00     7.10

      Screen Pixels 1280 Wide 736 High

      Total Elapsed Time  121.0 seconds