1

我们的 Android 游戏存在 Galaxy S2 独有的问题。

有时渲染会卡顿。我的意思是它基本上似乎渲染了最后两帧(好像它交换了最后两个渲染缓冲区而不更新任何一个)。

真正奇怪的是游戏还在不断更新,所以说口吃持续了 2 秒,游戏会在幕后进行 2 秒。

这很奇怪,因为我们的代码基本上是这样的:

function Update()
    DoGameLogic()
    DoRender()

所以这意味着如果我们的游戏更新了,游戏也渲染了。最大增量时间限制为 1 帧,因此在卡顿期间必须有多个更新,因此必须有多个渲染。

我目前的理论是,在大多数设备上,游戏在渲染期间滞后,但在 S2 上,渲染调用被执行,但它们“失败”而不更新渲染缓冲区。

有没有人遇到过这个问题?我真的很感激任何关于这可能是什么的建议。

4

1 回答 1

0

我们发现了问题所在。

Galaxy S 2 出于某种原因耗尽了 GL 内存。这在我们正在测试的设备上并不明显,但在其他设备上它会在某些 Open GL 调用时崩溃——而不是让你注意的有问题的调用。

最终我们找到了使用 Point sprite VBO 的方法。由于 S 2 是一款功能强大的设备,我们将 Point sprite 替换为 Quad 的模仿点 sprite 作为解决方法。

顺便说一句,SoundPool 也会在此设备上耗尽内存,需要另一种解决方法。

于 2011-12-23T03:38:11.427 回答