我们的安卓游戏有一个问题,这个问题似乎是Galaxy S2独有的。
有时渲染会卡顿。我的意思是,它似乎基本上渲染了最后两帧(就好像它交换了最后两个渲染缓冲区,而没有更新)。
真正奇怪的是游戏在不断更新,所以假设卡顿持续2秒,游戏将在幕后进行2秒。
这很奇怪,因为我们的代码基本上是这样的:
function Update()
DoGameLogic()
DoRender()因此,这意味着如果我们的游戏已经更新,游戏也已经渲染。最大增量时间上限为1帧,因此必须有多个更新,从而在卡顿期间进行多次渲染。
我目前的理论是,在大多数设备上,游戏在渲染过程中会滞后,但在S2上,渲染调用会被执行,但它们在不更新渲染缓冲区的情况下“失败”。
有没有人遇到过这个问题?我真的很感谢任何关于这可能是什么的建议。
发布于 2011-12-23 11:38:11
我们发现了问题所在。
由于某种原因,Galaxy S2耗尽了GL内存。这在我们正在测试的设备上并不明显,但在其他设备上,它会在某些Open GL调用中崩溃-而不是令人不快的调用。
由于S2是一个强大的设备,我们用Quad的模拟点精灵代替了点精灵作为一个变通办法。
顺便说一句,SoundPool也会耗尽此设备上的内存,这需要另一个解决方法。
https://stackoverflow.com/questions/8160825
复制相似问题