2011-11-17 60 views
1

我們的Android遊戲有一個問題,這似乎是Galaxy S2獨有的問題。在Galaxy S2上渲染時打開GL口吃

偶爾呈現會口吃。通過這個我的意思是它基本上似乎渲染了最後兩幀(就像它交換最後兩個渲染緩衝區而不更新)。

這真的很奇怪,因爲遊戲不斷更新,所以說口吃持續2秒,遊戲將在幕後進行2秒。

這很奇怪,因爲我們的代碼基本上是這樣的:

function Update() 
    DoGameLogic() 
    DoRender() 

因此,這意味着,如果我們的遊戲已經更新,遊戲中還呈現。最大增量時間被限制爲1幀,所以必須有多個更新,並因此在口吃期間進行多次呈現。

我目前的理論是,在大多數設備上游戲在渲染過程中滯後,但是在S2上執行渲染調用,但是它們「不經過」更新渲染緩衝區。

有沒有人遇到這個問題?我真的很感激任何關於這可能是什麼的建議。

回答

0

我們發現問題所在。

Galaxy S 2出於某種原因用光GL內存。這在我們正在測試的設備上並不明顯,但在其他設備上,它會在某些Open GL通話中崩潰 - 而不是違規通話。

最終我們將其追蹤到使用Point sprite VBO's。由於S 2是一款功能強大的設備,因此我們用Quad的模擬點精靈替代了Point sprites作爲解決方法。

順便提一下,SoundPool也會在此設備上用完內存,需要另一種解決方法。