在顶部播放带有许多粒子的视频

时间:2011-09-22 15:43:36

标签: iphone ios ipad opengl-es core-animation

我正在使用AVPlayer播放电影,并在顶部设置500个落下的粒子。我试着简单地添加500个动画CALAyers。我尝试了几种变体,但性能总是一个问题。一旦我得到大约100个CALayers,视频就会变得不稳定。这样做的正确方法是什么?我想也许应该用OpenGL来完成,但是我从来没有使用它,也找不到如何在OpenGL中播放视频。我可以将背景视频作为单独的帧pngs,但是全屏,内容大小相当快。

3 个答案:

答案 0 :(得分:0)

尝试将粒子绘制为数量少得多的CALayers,每层位图多个粒子,每个落点速度一个等等。然后根据需要重新绘制背景线程中的图层,以免影响合成视频帧速率

答案 1 :(得分:0)

看一下这篇文章Alternatives to creating an openGL texture from a captured video frame to overlay an openGL view over video? (iPhone)。 Brad展示了如何将视频渲染为OpenGL纹理。然后,您可以在视频纹理平面上渲染粒子。对于交互,您可以集成物理引擎(例如Bullet)以将力施加到屏幕区域以与粒子交互。

如果你可以等,我认为这将在iOS5中变得更容易(视频到纹理流)。

答案 2 :(得分:0)

我们最终在视频动画中使用Cocos2D运行OpenGL图层。性能受到了一点影响,但是根据我们的需要,它没问题。