CAEmitterLayer не отображается при вызове -renderInContext :суперслоя

У меня есть приложение для рисования, и я хотел бы, чтобы мои пользователи могли использовать эффекты частиц как часть своего рисунка. По сути, смысл приложения состоит в том, чтобы выполнять пользовательский рисунок и сохранять его в Camera Roll или делиться им через World Wide Web.

Недавно я познакомился с классом CAEmitterLayer, который, по моему мнению, был бы простым и эффективным способом добавления эффектов частиц.

Я смог нарисовать частицы на экране в приложении, используя реализацию CAEmitterLayer. Так что рендеринг на экране работает нормально.

Когда я отрисовываю содержимое чертежа, используя

CGContextRef context = UIGraphicsBeginImageContextWithSize(self.bounds.size);

// The instance drawingView has a CAEmitterLayer instance in its layer/view hierarchy
[drawingView.layer renderInContext:context];


//Note: I have also tried using the layer.presentationLayer and still nada

....
//Get the image from the current image context here for saving to Camera Roll or sharing


....the particles are never rendered in the image.

Что, по моему мнению, происходит

CAEmitterLayerнаходится в постоянном состоянии «оживления» частиц. Вот почему, когда я пытаюсь отрендерить слой (, я также пытался отрендерить layers.presentationLayerи modelLayer ), анимация никогда не фиксируется, и поэтому рендеринг внеэкранного изображения не содержит частиц.

Вопрос Кто-нибудь визуализировал содержимое CAEmitterLayerза кадром? Если да, то как вы это сделали?

Альтернативный вопрос Кто-нибудь знает какие-либо библиотеки систем эффектов частиц, которые не используют OpenGL и не являются Cocos2D?

6
задан Daniel 13 August 2012 в 00:09
поделиться