2011-09-22 20 views
0

我正在使用AVPlayer播放電影並在上面放置500個落下的粒子。我試圖簡單地添加500個動畫CALAyers。我嘗試了幾個變化,但性能始終是一個問題。只要我獲得大約100名CALayers,視頻就會變得不穩定。什麼是正確的方法來做到這一點?我想也許這應該使用OpenGL來完成,但是我從來沒有使用它,也找不到如何在OpenGL中播放視頻。我可以將背景視頻作爲單獨的幀格式,但是作爲全屏幕,內容大小變得相當快。在頂部使用動畫播放有很多粒子的視頻

回答

0

我們結束了在我們的視頻動畫上使用Cocos2D運行OpenGL圖層。表演受到了一些影響,但爲了我們的需要,這沒什麼問題。

0

嘗試將粒子繪製成數量更少的CALayers,每個層位圖有多個粒子,每個粒子落下一個速度等等。然後根據需要重繪後臺線程中的圖層,以免影響合成視頻幀率。

+0

問題是我需要用戶能夠與粒子進行交互,並讓動畫看起來很現實。現在,我爲每個粒子生成一個自定義路徑,效果非常好。 我試圖使用UIGraphicsBeginImageContext編寫離屏圖像,但向其添加粒子圖像(500)並使用CADisplayLink刷新圖層也導致性能極差。 – droussel

0

看看這個帖子Alternatives to creating an openGL texture from a captured video frame to overlay an openGL view over video? (iPhone)。 Brad演示瞭如何渲染視頻到OpenGL紋理。然後,您可以在視頻紋理化的平面上呈現您的粒子。對於交互,您可以集成一個物理引擎(如Bullet),以將力施加到屏幕區域以與粒子進行交互。

如果您可以等待,我認爲這將變得更容易(視頻到紋理流)在iOS5中。