Tengo una aplicación de dibujo y me gustaría que mis usuarios puedan usar efectos de partículas como parte de su dibujo. Básicamente, el objetivo de la aplicación es realizar dibujos personalizados y guardarlos en Camera Roll o compartirlos a través de la World Wide Web.CAEmitterLayer no representa cuando -renderInContext: de superlayer se llama
Hace poco codifiqué la clase CAEmitterLayer
, que creo que sería una forma simple y efectiva de agregar efectos de partículas.
He podido dibujar las partículas en pantalla en la aplicación usando la implementación CAEmitterLayer
. Así que renderizar en pantalla funciona bien.
Cuando hago para representar el contenido del dibujo utilizando
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.
Lo que creo que está pasando
El CAEmitterLayer
está en un constante estado de "animación" las partículas. Es por eso que cuando intento renderizar la capa (también intenté renderizar layers.presentationLayer
y modelLayer), las animaciones nunca se confirman y, por lo tanto, la representación de la imagen fuera de pantalla no contiene las partículas.
Pregunta ¿Alguien ha rendido el contenido de un CAEmitterLayer
fuera de la pantalla? Si es así, ¿cómo lo hiciste?
Pregunta alternativa ¿Alguien sabe de alguna biblioteca de sistema de efectos de partículas que no utiliza OpenGL y no es Cocos2D?
¿Alguna suerte con esto? –
No, vea la respuesta Revis a continuación. CAEmitterLayer no puede invocar a renderInContext: – micksabox