享受数百万个最新的Android应用,游戏,音乐,电影,电视,书籍,杂志等。随时随地,您的设备遍布设备。
该应用程序针对开发人员,或任何对OpenGL和画布之间的性能差异感到好奇的人。具体而言,它使用java和c的混合体明确地测量了绘制2D精灵的性能,并使用java的帆布绘制了2D Sprites。
完成测试后,您可以通过按下设备的背面按钮来查看性能的基准分析。
它类似于克里斯·普鲁特(Chris Pruett)的精灵方法测试,但已针对OpenGL ES 2.0进行了更新。他的Sprite方法测试运行了过时的ES 1.0,并在果冻豆(由于Tripple Buffering)上被打破。
该应用程序可在支持OpenGL ES 2.0的所有设备上工作。
这是无广告且无符号的。
更多详细信息:
具体而言,该应用程序使用java和c的混合体明确地测量了绘图2D精灵的性能,并使用java的canvas绘制2D Sprites。
在每个帧:
背景色略微移动,在红色和白色之间脉动。
每个精灵都会移动一个随机的(高斯)数量。如果精灵的中心越过屏幕的边缘,则精灵移动到随机屏幕位置。
画布测试使用SurfaceView和Canvas.drawBitMap()。所有计算均在float []上的Java(使用Random.nextgaussian()和Random.nextfloat())中完成。
OpenGL ES 2.0测试使用Java中的GLSurfaceView。计算是在本机浮点[]上使用C(使用Drand48()和与Java的高斯算法的内联C等于Java算法的c进行计算。绘图也是在C中使用gldrawarrays(gl_points,...)进行的。 C(NDK)方法称为从Java到JNI的每个帧。
所有测试均具有Java分析操作的相同开销。
统计数据:
FPS信息是关于何时实际发布到屏幕上的框架(从技术上讲,SurfaceFlinger)。
绘制信息是关于在OpenGL测试中发出() + glfinish()所需的时间。它不计算实际翻转屏幕缓冲区的时间。
推送信息(仅VBO)是将顶点数据推到GPU缓冲区所需的时间。每帧通常为<.5ms(到0.000)。使用非VBO OpenGL测试时,这次基本上包含在绘图时间中。在实际应用中,将数据推向GPU可能需要更长的时间。此示例仅包含一个VBO(或顶点阵列),每个精灵有2个浮子。实际应用程序将具有更多数据(例如大小和纹理信息)。
计算信息是关于计算框架背景颜色所需的时间和每个精灵的新位置。当启用JIT时,Java(帆布)测试和本机(开放GL)测试之间的计算时间是可比的,但是在禁用JIT时,Java遭受了重大惩罚。