Mam aplikację do rysowania i chciałbym, aby moi użytkownicy mogli używać efektów cząsteczkowych jako części ich rysunku. Zasadniczo, celem aplikacji jest wykonanie niestandardowego rysunku i zapisanie w aplikacji Camera Roll lub udostępnienie w sieci WWW.CAEmitterLayer nie renderuje, gdy -renderInContext: z superlayer nazywa się
Ostatnio spotkałem klasę CAEmitterLayer
, która według mnie byłaby prostym i skutecznym sposobem dodawania efektów cząsteczkowych.
Byłem w stanie narysować cząstki na ekranie w aplikacji przy użyciu implementacji CAEmitterLayer
. Więc renderowanie na ekranie działa dobrze.
Kiedy idę o renderowania zawartości rysunku za pomocą
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.
Co myślę dzieje
CAEmitterLayer
jest w stanie ciągłego „animowanie” cząstek. Dlatego gdy próbuję renderować warstwę (próbowałem również renderować layers.presentationLayer
i modelLayer), animacje nigdy nie są zatwierdzane, a więc renderowanie poza ekranem nie zawiera cząstek.
Pytanie Czy ktoś wyrenderował zawartość poza ekranem CAEmitterLayer
? Jeśli tak, jak to zrobiłeś?
Alternatywne pytanie Czy ktoś wie o jakichkolwiek bibliotekach efektów cząsteczkowych, które nie korzystają z OpenGL i nie jest Cocos2D?
Czy to szczęście? –
Nie, patrz odpowiedź Revis poniżej. CAEmitterLayer nie może wywołać renderInContext: – micksabox