Benutzerdefinierte Ansicht übergang in OpenGL ES
Ich versuche zu schaffen, einen eigenen übergang, der als Ersatz für eine Standard-überblendung aus, die Sie erhalten würden, hier zum Beispiel:
[self.navigationController pushViewController:someController animated:YES];
Vorbereitet habe ich eine OpenGL-basierte Ansicht führt, dass eine Wirkung auf einige statische textur zu einer Ebene (sagen wir, es ist eine Kopie der flip-Effekt im Core Animation). Was ich nicht weiß, wie zu tun ist:
- greifen aktuelle Inhalte anzuzeigen und eine textur aus ihm heraus (ich erinnere mich an eine Funktion, die macht genau das, aber kann es nicht finden)
- wie das gleiche zu tun für die Ansicht, dass derzeit die offscreen sind, und ersetzen Sie die aktuelle Ansicht
- gibt es einige APIs, die ich anhaken kann, um meinen übergang Klasse als native wie möglich zu machen (es eine Art Core-Animation-Effekt)?
Irgendwelche Gedanken oder links sehr dankbar!
UPDATE
Jeffrey Forbes Antwort eignet sich hervorragend als Lösung zum erfassen des Inhalts einer Ansicht.
Was ich hab noch nicht herausgefunden, wie erfassen den Inhalt der view möchte ich zum übergang auf die, die unsichtbar sein sollte, bis der übergang erfolgt.
Auch, welche Methode sollte ich die OpenGL-Ansicht?
Zu Demonstrationszwecken verwendet pushViewController. Das betrifft die Navigationsleiste, obwohl, was will ich eigentlich fahren Sie einen Artikel zurück, mit animation, check das vid zur Erklärung:
Andere option wäre zu gehen mit presentViewController, aber das zeigt Vollbild.
Denken Sie vielleicht, erstellen Sie ein anderes Fenster (oder sehen?) könnte nützlich sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während ich nicht ganz Ihre Frage zu beantworten, ohne dabei einige mehr meine eigene Forschung, ich kann ein bisschen helfen:
-Um die Ansicht eines UINavigationController, die Sie brauchen, um einen screenshot aufzunehmen. Der einfachste Weg dies zu tun ist, indem Sie es in ein UIImage:
Ich bin nicht sicher, ob man das Rendern einer GLContext (nicht auskennen, am Telefon) in einer CGImage, aber ich würde so etwas machen (und init ein UIImage aus dass). Ich würde prerender jeden frame der animation, die Sie versuchen zu tun, und schüttete es in eine UIImageView mit dem Animations-Zeug innerhalb. Das heißt, wenn Ihr die animation ist einfach genug. Sonst könnte es nach unten kommen, um schreiben Sie Ihre eigenen Animations-Funktion :-/
Ich haben gerade zusammen ein übergang Klasse zu implementieren, die Ihren eigenen übergang-animation in OpenGL ES.
Fühlen Sie sich frei, darüber zu Lesen, hier
Gibt es zwei Beispiel-übergänge in das Projekt, fühlen sich frei, fügen Sie eigene zu.
Ich denke, die Funktion, die Sie vielleicht denkt, der ist http://www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml ... legen Sie den Arbeitsbereich, um die textur-Größe und ziehen Sie dann, wie gewohnt, dann tun glCopyTexImage2D kopieren Sie die Szene auf eine textur.
oder Sie sollte in FrameBuffer-Objekten. Die Standard-OpenGL-Vorlage in XCode verwendet diese. Generieren Sie einfach die Beispiel-Projekt, um zu sehen, wie diese arbeiten.
Ich habe vor kurzem schreiben, übergang animation zwischen view-Controller, wie Sie. Wenn Sie möchten, um zusätzliche Informationen aus den unsichtbaren Blick, können Sie versuchen, verzögert den übergang so :