2010-04-25 24 views
1

我正在構建一個2D的OpenGL es應用程序對於iPad,它顯示背景紋理以及始終處於運動狀態的衆多紋理。iPhone中的口吃動畫OpenGL ES雖然fps很高

每一幀的位置都是基於時間增量和速度重新計算的,整個東西都是以60fps的速度成功渲染的,但是隨着精靈移動速度的提高,東西看起來會停頓。

任何想法?我在做什麼繼承問題?有沒有已知的平滑動畫設計模式?

+0

你使用雙緩衝嗎? – 2010-04-25 18:46:29

回答

0

嘗試將時間增量計算爲最後N幀的平均值,因爲可能有一些幀比其他幀需要更多時間。你使用時間三角洲動畫?使用它非常重要!另外,請嘗試在加載時加載所有資源,而不是在使用它們時加載它們。這也可能會減慢一些幀。

0

如果你看看時間差值,你可能會發現它們並不是非常一致的幀到幀。這可能不是因爲這些幀需要不同的渲染時間,而只是GLES驅動程序的批處理,流水線性質的人造物。

嘗試使用某種移動的時間差的平均值,而不是:http://en.wikipedia.org/wiki/Moving_average

請注意,即使你在你的應用觀察的時間差都不是很一致的,事實上,你得到60fps的意味着這些幀可能會以固定的時間間隔顯示(我假設您每幀顯示v-同步獲得一幀)。這意味着您的應用程序進行GL調用和出現在顯示屏上的結果幀之間的延遲正在改變。正是你試圖用移動平均數來隱藏這種變化。