Wie man UIImage aus EAGLView?
Ich versuche zu bekommen UIImage aus, was angezeigt wird in meinem EAGLView. Irgendwelche Vorschläge auf, wie dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versuche zu bekommen UIImage aus, was angezeigt wird in meinem EAGLView. Irgendwelche Vorschläge auf, wie dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT: wie demianturner Hinweise unten, die Sie nicht mehr benötigen, um zu machen die Ebene, Sie können (und sollten) nun mit dem höheren Ebene
[UIView drawViewHierarchyInRect:]
. Andere als das; dies sollte die gleiche Arbeit.Einer
EAGLView
ist nur eine Art der Sicht, und die Ihr zugrunde liegendenCAEAGLLayer
ist nur eine Art von Schicht. Das bedeutet, dass die standard-Ansatz für die Konvertierung einer Ansicht/Ebene in ein UIImage arbeiten. (Die Tatsache, dass die verlinkte Frage ist UIWebview spielt keine Rolle; das ist eben noch eine andere Art von Ansicht).renderInContext
Methode. Das ist falsch. Was ich verlinkte, gibt die richtige Antwort die ist, dass diedrawViewHierarchyInRect
Methode ist notwendig. Alle Antworten auf dieser Seite, und ich versuchte jeweils, sugges hinunter zu OpenGL, das ist nicht notwendig.Hier ist eine gereinigte version von Quakeboy code.
Getestet habe ich es auf dem iPad und funktioniert Prima.
Zu den Verbesserungen gehören:
Verwenden Sie diese Methode in Ihrer EAGLView:
buffer2
tatsächlich freigegeben werden müssen manuell zur Vermeidung einer Leckage. Dies wurde auch behoben.[UIImage imageWithCGImage:imageRef]
UrsachenmyImage
hängtbuffer2
. Das bedeutet, dassfree(buffer2)
wird eine Speicherbeschädigung verursachen, damyImage
wird noch später gebraucht. Ich empfehle ZeichnungimageRef
in einem Kontext, dann immer das Bild von ihm.War ich nicht in der Lage zu Holen Sie sich die anderen Antworten hier zu arbeiten, richtig für mich.
Nach ein paar Tagen bekam ich endlich eine funktionierende Lösung für dieses. Es gibt code von Apple produziert ein UIImage aus einer EAGLView. Dann müssen Sie einfach kippen Sie das Bild vertikal da UIkit auf den Kopf.
Apple - Methode Geändert, in der Ansicht, die Sie wollen, um in ein Bild.
}
Und ist hier eine Methode, das Bild kippen,
}
Und hier ist ein link auf der Apple dev Seite gefunden, wo ich die erste Methode für die Referenz.
http://developer.apple.com/library/ios/#qa/qa1704/_index.html
CGDataProviderCreateWithData
kommt mit einem release callback die Daten freigeben, wo Sie tun sollten, lösen:Dann tun Sie dieses wie andere Beispiele, aber NICHT zu freien Daten hier:
Verwenden oder einfach
CGDataProviderCreateWithCFData
ohne release callback-Zeug statt:Für mehr Informationen, bitte überprüfen Sie diese diskutieren:
Was ist die richtige Speicher-management-Muster für Puffer->CGImageRef->UIImage?
Mit diesem oben genannten code von Brad Larson, müssen Sie Bearbeiten Ihre EAGLView.m
Müssen Sie ändern
numberWithBool
WertYES