Download - Benjamin Granzow Portfolio
Download - Benjamin Granzow Portfolio
Download - Benjamin Granzow Portfolio
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.4. OPENGL ES 2.0 GRAFIKPIPELINE 14<br />
Abbildung 2.4: Programmierbare OpenGL ES pipeline<br />
Wie in Abbildung 2.4 dargestellt, ist die OpenGL ES Pipeline in drei Phasen<br />
aufgeteilt: Das Vertex Processing, das Fragment Processing und das Compositing.<br />
2.4.1 Vertex Processing<br />
Während dem Vertex Assambly Schritt werden die Daten aus der Anwendung<br />
in den Grafikkartenspeicher geladen. Dies geschieht zB. über ein VBO,<br />
welches die Vertices von Primitiven mit ihren zugehörigen Attributen enthält.<br />
Diese Daten werden als Attribute an den Vertexshader weitergegeben.<br />
Im Vertexshader werden verschiedene Vertex-Attribute transformiert. Meistens<br />
wird dieses auf die Position angewendet, aber potentiell können alle<br />
Attribute wie die Normale oder andere Anwendungsspezifische Per-Vertex-<br />
Daten transformiert werden. Nachdem die Vertex-Attribute transformiert<br />
wurden, können weitere beliebige Werte über sogenannte Varyings an den<br />
Fragmentshader weitergegeben werden. Nähere Beschreibung zum Vertexshader<br />
folgt im Abschnitt 2.5.1 Vertexshader. Darauf folgt der Primitiv Assembly<br />
Schritt, welcher die einzelnen Vertices zu Primitiven zusammensetzt.<br />
Danach werden beim Clipping die Bereiche der Objekte abgeschnitten, welche<br />
nicht im sichtbaren Ausschnitt liegen. Dies reduziert die weiterzuverarbeitenden<br />
Daten und entlastet dadurch die nachfolgenden Schritte.<br />
2.4.2 Fragment Processing<br />
Der erste Schritt in dieser Phase ist die Rasterization. Dabei wird für jeden<br />
Pixel, der ein Teil des Primitiven abdeckt, ein Fragment erzeugt. Jeder<br />
dieser Fragments gehört dabei zu einer Rasterposition auf dem Bildschirm,<br />
repräsentiert diesen aber nicht, da üblicherweise mehrere Fragments von unterschiedlichen<br />
Objekten auf einer Rasterposition liegen. Diese Fragments,<br />
welche aus den interpolierten Werten der Vertices bestehen, durchlaufen anschließend<br />
den Fragmentshader, der den endgültige Farbwert des Fragments<br />
berechnet. Dies kann durch Texturzugriffe oder Funktionen geschehen. Nähere<br />
Beschreibung folgt im Abschnitt 2.5.2 Fragmentshader.<br />
2.4.3 Compositing<br />
Die Compositing Phase ist der letzte Verarbeitungsschritt bevor der Farbwert<br />
in den Framebuffer gespeichert wird. Der Framebuffer ist ein 2D-Array<br />
von Pixeln und ihren Attributen (Farbe, Transparenz, Tiefe), welches das