In dem folgenden Beitrag möchten wir ihnen die grundlegenden Konzepte von OpenGL vorstellen. Die Beantwortung der folgenden Fragen wird im Fokus dieses Beitrags stehen:
Was ist OpenGL?
OpenGL, die Abkürzung für Open Graphics Library, ist eine sprach- und plattformübegreifende API zur Darstellung von 2D- und 3D-Computergrafiken. Hier werden wir speziell auf die ES (embedded System) Version eingehen, die auf mobilen Geräten (iOS und Android) verwendet wird. Der Hauptkonkurrent von OpenGL ist D3D (oder Direct3D), eine Windows-Technologie, die Teil der bekannten DirectX-API ist.
Einfach ausgedrückt, OpenGL ist eine Möglichkeit, den Grafikprozessor zu programmieren und es ist das Herzstück von fast allem, was wir heutzutage auf einem Computer / Smartphone / Tablet sehen. Sogar UIKit setzt auf OpenGL. OpenGL ist die Technologie hinter dem Grafik-Rendering.
In Apples Technologie-Stack gibt es verschiedene Frameworks, um verschiedene Dinge zu tun. Sie sollten CoreGraphics und CoreImage verwenden, um Bilder und Filter zu bearbeiten, CoreAnimation, um Ansichten zu animieren, SceneKit, um 3D-Objekte zu verwalten. Warum und wann sollten Sie also OpenGL verwenden? Kurz gesagt, wenn Sie auf die leistungsstarken Funktionen der Grafikkarte (GPU) ihres Geräts zugreifen wollen. Übrigens ist OpenGL derzeit die einzige Möglichkeit, ein 3D-Objekt in einer nativen iOS-Applikation darzustellen.
Nebenbei bemerkt, wenn ihnen jemand gesagt hat, dass OpenGL das am besten geeignete und mächtigste Werkzeug ist, um Videospiele zu erstellen, ist das nur ein Teil der Wahrheit. Sicherlich unterstützt OpenGL alle modernen Spiele (außer denen, die auf MSFT D3D laufen), aber kaum eines von ihnen (außer bei großen Studios) wird von Grund auf neu geschrieben. Und wenn Sie an solchen Themen interessiert sind, dann sollten Sie vielleicht andere Frameworks (ob 2D oder 3D) ausprobieren, die eine höhere Abstraktionsebene haben.
OpenGL ES.
Also, konzentrieren wir uns auf OpenGL ES. Die meisten Dinge, die wir behandeln werden, gelten auch für OpenGL, einige davon sind spezifisch für die eingebettete Version. Von jetzt an, wenn wir von OpenGL sprechen, meinen wir die ES-Version. Lassen Sie uns kurz einige wichtige Punkte besprechen, die das Herzstück von OpenGL bilden:
OpenGL ES v. 1 vs. 2
Ab iOS 3.0 unterstützt Apple OpenGL ES 2 und hat die Entwickler nachdrücklich ermutigt, auf die neueste Version der Grafikbibliothek umzusteigen. Der Hauptunterschied zwischen v.1 und v.2 ist die so genannte programmierbare Pipeline. Grundsätzlich bietet und erfordert OpenGL ES 2 die Definition eigener Shader (spezifische Programme, die auf der GPU und nicht auf der CPU ausgeführt werden.
Während Sie in v.1 alles andere als Rohdaten an die GPU übergeben können, müssen Sie in v.2 eigene Shader definieren. Das heißt: mehr Leistung, mehr Arbeit für den Entwickler. OpenGL ES v.2 erfordert in der Tat, dass Sie schreiben:
Da dies einer der Hauptgründe war, warum sich die Entwickler nicht auf v.2 zubewegten, führte Apple mit iOS 5 ein neues Framework ein, GLKit.
GLKit.
So viel zu Theorie. Wenn Sie sich beispielsweise in WebGL einarbeiten möchten, empfehlen wir ihnen das Durcharbeiten unserer WebGL-Tutorial-Serie. An dieser Stelle ist es ausreichend zu sagen, dass GLKit einige Möglichkeiten bietet, um sich um einige der härteren Bits und sich wiederholenden OpenGL-Dinge zu kümmern. Abgesehen von einigen nützlichen mathematischen Hilfsprogrammen zum Umgang mit Matrizen, Quaternionen, affinen und homogenen Transformationen und ähnliche andere verschreckende Elemente, hat GLKit GLKBaseEffect eingeführt, eine Klasse, die die ganze Komplexität von Shadern beseitigt. Darauf werden wir in einem zukünftigen Beitrag noch etwas genauer eingehen.