Воспроизведение видео с множеством анимированных частиц сверху - PullRequest
0 голосов
/ 22 сентября 2011

Я играю фильм, используя AVPlayer и анимируя 500 падающих частиц сверху. Я попытался просто добавить 500 анимированных CALAyers. Я попробовал несколько вариантов этого, но производительность всегда проблема. Как только я получаю более 100 CALayers, видео становится прерывистым. Каков был бы правильный способ сделать это? Я подумал, что, возможно, это должно быть сделано с использованием OpenGL, но я никогда не использовал его и не могу найти способ воспроизведения видео в OpenGL. Я могу получить фоновое видео в виде отдельных png-кадров, но в полноэкранном режиме размер контента довольно быстро увеличивается.

Ответы [ 3 ]

0 голосов
/ 22 сентября 2011

Взгляните на этот пост Альтернативы созданию текстуры openGL из захваченного видеокадра для наложения представления openGL на видео?(IPhone) .Брэд показывает, как рендерить видео в текстуры OpenGL.Затем вы можете визуализировать ваши частицы поверх видео текстурированной плоскости.Для взаимодействия вы можете интегрировать физический движок, такой как Bullet, для приложения усилий к областям экрана для взаимодействия с частицами.

Если вы можете подождать, я думаю, это станет намного проще (видео в поток текстур) в iOS5.

0 голосов
/ 02 декабря 2011

В итоге мы запустили слой OpenGL, используя Cocos2D поверх нашей видео анимации.Спектакль немного повлиял, но для нас все было в порядке.

0 голосов
/ 22 сентября 2011

Попробуйте нарисовать частицы в гораздо меньшее количество слоев CALay, несколько частиц на растровое изображение слоя, по одной на каждую скорость падения и т. Д. Затем перерисуйте слои в фоновых потоках, как это необходимо, чтобы не влиять на составные изображения на частоту кадров видео.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...