【问题标题】:Writing real time opengl-es game for android - some question (optimizing)为 android 编写实时 opengl-es 游戏 - 一些问题(优化)
【发布时间】:2011-03-12 10:04:47
【问题描述】:

1.

游戏中的时间安排: 有没有其他方法可以使用System.Currentmillis()-starttime>XX 来更新游戏中的任何内容?它是安全的还是 CPU 昂贵?

2.

在我的游戏中,我有 20 个项目(移动方形顶点),当达到 60-70 个顶点时,FPS 从 60 FPS 下降到 30-40 FPS。 (在 Galaxy S i9000 手机上测试)。 有没有办法让我的游戏FPS达到30FPS?将我的游戏更新到 30 FPS 是否有好处,或者我不需要处理这个? (因为较低的 FPS 会有延迟 - 会很慢)

如何让我的对象随时以相同的速度运行?

3.

最好的方法是什么:做 phisyx,以及 onDrawFrame 中的所有 stupp,或者:启动一个线程是什么为我做了数学?什么更快更好?

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    游戏中的时间:有没有其他方法可以使用 System.Currentmillis()-starttime>XX 来更新游戏中的任何内容?它是安全的还是 CPU 昂贵?

    您应该使用时间增量系统。有很多关于这个的教程。这是一个很好的教程:deWiTTERS Game Loop.

    在我的游戏中,我有 20 个项目(移动方形顶点),当达到 60-70 个顶点时,FPS 从 60 FPS 下降到 30-40 FPS。 (在 Galaxy S i9000 手机上测试)。有没有办法让我的游戏FPS达到30FPS?将我的游戏更新到 30 FPS 是否有好处,或者我不需要处理这个? (因为较低的 FPS 会有延迟 - 会很慢)

    这取决于您使用的方法。如果是 3D,您应该考虑使用 Vertex Buffer Objects (VBO:s)(类似于 Vertex Array,但在设备的 GPU 内存中)。这有很大的不同,因为 CPU 不需要每次迭代都将数据从 CPU 复制到 GPU。

    如果是 2D,您仍然可以使用 VBO:s,但如果推荐的设备支持 draw_texture

    但是,选项是:

    • Vertex Arrays(最慢)。
    • Vertex Buffer Objects(在 3D 中最快,在 2D 中比 draw_texture 慢)。
    • draw_texture 扩展(在 2D 中最快,但不渲染 3D 内容)。

    您可以支持所有这些方法以覆盖整个 Android 设备范围,但请记住检查设备的 OpenGL 驱动程序的扩展。有些可能支持所有这些,但有些设备可能只支持Vertex ArraysVBO:s(例如)。

    我已经回答了一个相关问题here,但只是为了向您展示;以下是 Chris Pruett 在 Google I/O 上的一次演讲的印刷品:

    如何让我的对象随时以相同的速度运行?

    你不能。 Android 是一个多处理操作系统,您不知道发生了什么(也许另一个Service 应用程序正在更新?)。你可以做的是使用时间增量系统,就像我上面提到的那样。

    最好的方法是什么:做 phisyx,以及 onDrawFrame 中的所有 stupp,或者:启动一个线程是什么为我做了数学?什么更快更好?

    推荐多线程(两个Thread并行运行)。很快,在onDrawFrame 中进行绘图,并在您自己创建的Thread/Runnable 中更新内容。

    推荐资源:

    【讨论】:

    • 不是所有手机都支持顶点缓冲区对象?不是吗?
    • @lacas:不,这不能保证。大多数设备都支持它,但也有一些设备不支持它。
    • @lacas:副本岛是一款令人印象深刻的游戏,它也是开源的。看Grid.java看看怎么用Vertex Buffer Objectscode.google.com/p/replicaisland/source/browse/trunk/src/com/…
    猜你喜欢
    • 2013-07-11
    • 2011-04-12
    • 2011-04-04
    • 2018-07-12
    • 2011-10-30
    • 2010-12-10
    • 1970-01-01
    • 2010-09-10
    • 2011-11-12
    相关资源
    最近更新 更多