在Galaxy S2上渲染时打开GL卡顿

时间:2011-11-17 00:57:05

标签: android opengl-es java-native-interface galaxy

我们的Android游戏存在一个独特的Galaxy S2问题。

偶尔渲染会断断续续。我的意思是它基本上似乎渲染了最后两帧(就好像它交换最后两个渲染缓冲区而不更新)。

这真的很奇怪,游戏会继续更新,所以说口吃持续2秒,游戏将在幕后进行2秒。

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

function Update()
    DoGameLogic()
    DoRender()

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

我目前的理论是,在大多数设备上,游戏在渲染过程中都会滞后,但在S2上,渲染调用会被执行但是它们会在#34;而不更新渲染缓冲区。

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

1 个答案:

答案 0 :(得分:0)

我们发现了问题所在。

Galaxy S 2出于某种原因耗尽了GL内存。这在我们测试的设备上并不明显,但在其他设备上,它会在某些Open GL呼叫时崩溃 - 而不是令人不快的通话。

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

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