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.5. GPU PROGRAMMIERUNG 16<br />
wird daher verworfen.<br />
Nachdem ein Fragment alle Test durchlaufen hat, wird dieser in den Framebuffer<br />
übertragen. Bei komplett sichtbaren Objekten wird der neue Wert<br />
direkt in den Framebuffer übertragen. Wenn aber transparente Objekte verwendet<br />
werden, müssen diese noch durch den Alpha-Blending Schritt verarbeitet<br />
werden.<br />
Alpha-Blending<br />
Mittels Alpha-Blending wird genau festgelegt, wie ein neuer Fragment mit<br />
dem alten Wert im Framebuffer kombiniert wird, um den neuen Wert festzulegen.<br />
Dafür muss eine Blendfunktion festgelegt werden. Dies geschieht<br />
über glBlendFunc(srcFactor,fbFactor), wobei für die Faktoren Enumeration verwendet<br />
werden. Die möglichen Werte können der OpenGL ES 2.0 Referenz<br />
[7] entnommen werden. Diese Funktion beschriebt, mit welchen Anteilen<br />
welche Farbwerte eingehen. srcFactor wird dabei auf die neuen Fragment<br />
angewendet und fbFactor auf den alten Wert im Framebuffer.<br />
2.5 GPU Programmierung<br />
Heutzutage sind die meisten Computer mit leistungsfähiger Grafikhardware<br />
ausgestattet. Diese Hardware besitzt einen eigenen Rechenkern, der auf die<br />
Berechnung von Grafiken optimiert ist. Dieser wurde historisch dafür verwendet,<br />
Projektionen für die Darstellung zu berechnen und Objekte nachträglich<br />
zu transformieren und mit Lichteffekten zu versehen. Dabei wurden<br />
Bereiche einer Textur heller oder dunkler eingefärbt, um Schatten und Licht<br />
darzustellen. Diese Beleuchtungsfunktionen waren fest auf der Hardware<br />
verankert und konnten nur leicht konfiguriert werden. Aus diesem Grund<br />
wurde diese auch als Fixed-Function-Pipeline bezeichnet. Durch den Nachfolger<br />
dieser Architektur, die Programmable-Graphics-Pipeline, wurden die<br />
Grafikprozessoren immer leistungsfähiger. Diese neuen Graphic Processing<br />
Units (GPUs) können mit beliebigen Mini-Programmen, den sogenannten<br />
Shadern, ausgestattet werden, um beliebige Berechnungen auszuführen.<br />
Die OpenGL ES Pipeline unterstützt zwei Typen von Shadern, welche an<br />
unterschiedlichen Stellen der Pipeline durchlaufen werden. Jeder übernimmt<br />
davon eine bestimmte Aufgabe. Im Folgenden werden die angedachten Aufgaben<br />
kurz erwähnt. Da die Shader aber frei programmierbar sind, ist es<br />
dennoch möglich, diese für andere Zwecke zu verwenden.<br />
Bei Shadern gibt es eine Besonderheit für Variablen, welche Werte von außerhalb<br />
erhalten oder welche herausgeben. Diese müssen zusätzlich mit einem<br />
Typenqualifizerer versehen werden. Er ist der Typendeklaration vorangestellt<br />
und kommt am Anfang des Shaders.