iOS: Core Graphics implementiert, die oben auf OpenGL?
Ich habe festgestellt, ein Diagramm, das zeigt, Core Graphics implementiert über OpenGL, und andere, setzt es neben OpenGL. Ich würde denken, dass würde Apple sein smart-to geben Sie jedem den gleichen Zugang zu den Grafik-hardware, aber dann wieder, ich weiß nicht viel über die Grafik-chip, die Sie verwenden... vielleicht ist es in 3D ist den ganzen Weg?
Hat jemand hier wissen, die Besonderheiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, auf iOS Core Graphics (Quartz) angezeigt werden, überlagern OpenGL ES für die Zeichnung, die Ziele der Bildschirm, obwohl nicht in einer expliziten Weise, auf die wir Zugriff haben.
Core-Graphics übernimmt die vector-Elemente (Linien, Bögen, etc.) und einige raster-ones (Bilder) und verarbeitet diese für die Anzeige auf dem Bildschirm oder für andere Formen der Ausgabe (PDF-Dateien, drucken, etc.). Wenn das Ziel ist, den Bildschirm auf iOS, diejenigen, die vector-Elemente wird gehostet in einem CALayer, entweder direkt oder durch die Trägerschicht von einem UIView.
Diese Core-Animation-Layer sind effektiv Wrapper rechteckigen Texturen auf der GPU, die ist, wie Core Animation kann die glatte translation, Skalierung und rotation der Ebenen, auch auf der original iPhone-hardware. Ich kann nicht finden, einen Verweis für es jetzt, aber mindestens eine der WWDC-Präsentation besagt, dass OpenGL ES verwendet wird von Core Animation, um die Kommunikation mit der GPU zum ausführen dieser hardware-Beschleunigung. Etwas ähnliches kann beobachtet werden auf die neue dual-GPU-MacBook Pros, wo die leistungsfähigere GPU tritt ein, wenn die Interaktion mit einer Anwendung mithilfe von Core Animation.
Da Core Graphics rastert die Vektor-und raster-Elemente in einen CALayer als Zeichnung auf dem Bildschirm, und ein CALayer effektiv wickelt sich um einen OpenGL ES-textur, ich würde OpenGL-ES-unten-Core-Grafik auf iOS, aber nur für den Fall, wo die Core-Grafik-rendering auf dem Bildschirm. Der Grund für die Seite-an-Seite-Platzierung in der Hierarchie, die Sie gesehen werden können, aufgrund von drei Faktoren: auf dem Mac, nicht alle Ansichten Ebene-gesichert, so können Sie nicht hardware-beschleunigt, auf die gleiche Weise; wir können nicht wirklich interagieren mit der OpenGL-ES-Unterstützung von standard-UI-Elemente, also aus Entwickler-Sicht sind unterschiedliche Konzepte; und Core-Grafik kann verwendet werden, um das Rendern auf dem Bildschirm sichtbaren Kontexten, wie PDF-Dateien oder Bilder.
argb32_mark
und blitting subfuctions und weitere 23% inaa_render
. Wenn es GL in hier, es ist nicht seiend verwendet für wirklich alles, was mit der Zeichnung.Core Graphics und OpenGL sind zwei völlig getrennte Systeme. Schauen Sie sich das Bild unten (Quelle), die zeigt, beide unter der gleichen Ebene. Die Beschreibung der Kern-Grafik unten auf der gleichen Seite zeigt auch, dass es auf der niedrigsten Ebene native drawing system.
Siehe auch die Über OpenGL ES Seite. Es zeigt, dass die OpenGL-code läuft direkt auf der GPU, und wenn Sie nach unten scrollen Sie werden sehen, dass es gibt einige Dinge, die nicht getan werden kann mit Anwendungen, die OpenGL. Natürlich, wenn die CG wurde auf OpenGL basiert, Sie wäre nicht in der Lage, diese Dinge zu tun überhaupt.
Schließlich, Blick auf die Zeichnung Modell Seite für iOS. An der Spitze, es vergleicht OpenGL native Zeichnung, die angibt, dass Sie arbeiten getrennt von einander.
Core Graphics und OpenGL sind separate Technologien. UIKit und AppKit sind gebaut auf der Oberseite sowohl, als auch als Core Animation. Sie können sehen, das Grafik-Technologie-stack innerhalb der Apple-Dokumentation (Core Animation Programming Guide)
Als der iOS-9-Core-Grafik, die auf iOS basiert auf dem Apple Metall Rahmen, nicht OpenGL.