首页应用商务办公

享受数百万最新的 Android 应用程序、游戏、音乐、电影、电视、书籍、杂志等。随时随地,通过您的设备。

该应用程序面向开发人员或任何对 OpenGL 和 Canvas 之间的性能差异感到好奇的人。具体来说,它测量使用 OpenGL ES 2.0 与 Java 和 C 混合的显式绘制 2D 精灵的性能,以及使用 Canvas 与 Java 绘制 2D 精灵的性能。

运行测试完成后,您可以通过按设备的后退按钮查看性能基准分析。

它类似于 Chris Pruett 的 Sprite Method Test,但针对 OpenGL ES 2.0 进行了更新。他的 Sprite Method Test 运行过时的 ES 1.0,并且在 Jelly Bean 上被破坏(因为三重缓冲)。

该应用程序适用于所有支持 OpenGL ES 2.0 的设备。

这是无广告且无打扰的。

更多详情:

具体来说,该应用程序测量使用 OpenGL ES 2.0 与 Java 和 C 混合的显式绘制 2D 精灵的性能,以及使用 Canvas 与 Java 绘制 2D 精灵的性能。

在每一帧上:

背景颜色略有变化,在红色和白色之间跳动。

每个精灵都会移动随机(高斯)量。如果精灵的中心超出屏幕边缘,则精灵会移动到随机的屏幕位置。

Canvas 测试使用 SurfaceView 和 Canvas.drawBitmap()。所有计算均在 Java 中(使用 Random.nextGaussian() 和 Random.nextFloat())在 float[] 上完成。

OpenGL ES 2.0 测试使用 Java 中的 GLSurfaceView。计算是在 C 语言中(使用 drand48() 和 Java 高斯算法的内联 C 等效项)在本机 float[] 上完成的。绘图也是用 C 语言完成的,使用 glDrawArrays(GL_POINTS, ...)。 C (NDK) 方法在每一帧中通过 JNI 从 Java 调用。

所有测试都具有相同的 Java 分析操作开销。

统计数据:

FPS 信息是关于帧实际发布到屏幕的时间(技术上讲是 SurfaceFlinger)。

绘制信息是关于发出绘制命令(以及 OpenGL 测试中的 glFlush() + glFinish())所需的时间。它不计算实际翻转屏幕缓冲区的时间。

推送信息(仅限 VBO)是将顶点数据推送到 GPU 缓冲区所需的时间。每帧通常 <0.5ms(四舍五入到 0.000s)。当使用非 VBO OpenGL 测试时,该时间实际上包含在绘制时间中。在实际应用中,将数据推送到 GPU 可能需要更长的时间。此示例仅包含一个 VBO(或顶点数组),每个精灵有 2 个浮点。实际应用会拥有更多数据(例如尺寸和纹理信息)。

Calc 信息是关于计算帧的背景颜色和每个精灵的新位置所需的时间。启用 JIT 时,Java (Canvas) 测试和本机 (Open GL) 测试之间的计算时间相当,但禁用 JIT 时,Java 会遭受严重损失。

最新版本 1.0.0 的新增功能

最后更新于 2015 年 10 月 4 日 版本 1.0.0
已上传至 Google Play

阅读更多信息

用户还查看了

查看全部

您可能感兴趣

查看全部

更多类似应用

查看全部

更多Level应用

查看全部