OpenCL & OpenGL ES

OpenCL und Open GL ES verzeichnen aktuell einen Boom, ausgelöst durch die mobile Gaming Front. Dank leistungsstarker ARM Prozessoren, welche hohe Leistung im Bereich von 200-1000MHz liefern und dabei sehr sparsam mit Energie umgehen, erleben wir heute auf unseren Handys oder besser Smartphones graphische Erlebnisse, die bis vor 15 Jahren den besten und schnellsten Personal Computern vorbehalten waren.

Während in der Computer der unangefochtene Grafikstandard DirectX seit Jahren den Marsch vorgibt, ist die mobile Welt in dieser Hinsicht recht verstritten, setzt jeder Hersteller mit seinem Betriebssystem auch auf eine andere Grafikschnittstelle(API), was Plattform übergreifende Spiele schwer bis unmöglich macht beziehungsweise machte. Dank der Open GL ES Schnittstelle wird es nun immer einfacher möglich, 3D Grafiken auf Plattform unabhängigen Komponenten zu beschleunigen, was schlussendlich den Spielern zu Gunsten kommt.

Dabei dient der oft genannte OpenCL Standard der Verteilung von den einzelnen Threads auf die vorhandene Hardware, beim Einsatz von aktuellen PowerVR Chips also auf die Unifield Shader, die in diesem Falle sogar zu reinen Rechenoperationen herangezogen werden können. Bei älteren Chips, die noch nicht auf dem Unifield Design basieren, sondern noch fest verdrahtete Pixel & Vertexeinheiten besitzen, werden diese dann auf die vorliegenden Einheiten verteilt. Dadurch muss der Entwickler sich nicht mehr auf die architektonischen Besonderheiten von Grafik oder Hauptprozessor sowie dem Betriebssystem kümmern, sondern kann sich ganz der maximalen Beschleunigung seiner Dreidimensionalen Objekte widmen.

Der OpenGL ES Standard ist hierbei eine Teilimplementation der gesamten OpenGL Bibliothek, welche jedoch stellenweise beschnitten wurde, da zum einen etliche Funktionen wie eine 64 Bit Vektor Berechnung auf Embedded Hardware schlicht und einfach nicht lauffähig ist, und zum anderen um die Größe des Pakets möglichst gering zu halten.

(Im Bild ist unverkennlich Counterstrike 1.6 zu sehen, der wohl bekannteste OpenGL Shooter, welcher schon mit einem 200MHz schnellen x86 Prozessor die gesamte Grafiklast auf dem Prozessor, also ohne separaten Grafikchip ausführen kann.)

So ist es beispielsweise möglich, vom ausführenden Hauptsystem mal abgesehen, den gleichen 3D Code auf dem Apple iPhone, Nokias N900 sowie Android OS Geräten wie dem Nexus One oder der Playstation 3 auszuführen.  In Anbetracht dessen, das es sich bei den drei Mobilgeräten um grundverschiedene Plattformen handelt, lässt sich eine „App“ mit geringem Aufwand für gleich alle 3 Plattformen umsetzten, was alleine schon aus Markanteilsaspekten sinnvoll ist. Bisher war Java mit dem JSR 184 Standard die einzige Möglichkeit, 2D&3D Applikationen für verschiedene Hardware gleich zu programmieren, jedoch mit dem Entscheidenden Nachteil, dass beim Ausführen der JavaVM (Virtuellen Maschine) ein Großteil der tatsächlichen Leistung verloren ging, zudem verfügten die Geräte ohnehin nicht über ihre heutige Rechenkraft. Zusätzlich bietet Java mehrere Schnittstellen für die getrennte 2D und 3D Beschleunigung, was gerade bei den Käufern zu Unverständnis  führte, konnte trotz beworbener „Java“ Fähigkeit das teuer bezahlte Spiel nicht genutzt werden. OpenGL geht hier einen anderen Weg: Kompatibilität. Zwar beherrschen manche Geräte nur den OpenGL 1.1 Standard, trozdem werden so viele Funktionen wie möglich portiert, um sie, eventuell mit Verlust von Bildqualität oder Geschwindigkeit, trotzdem verwenden zu können.

Auch bei der Hardware kennt OpenGL keine Grenzen: So lässt beispielsweise die Playstation3, welche ebenfalls auf OpenGL als Grafikstandard vertraut, lässt viele Rechenoperationen von der CPU oder genauer den 6 (Nein, nicht sieben oder acht) SPE Einheiten ausführen, damit der Grafikkern, welcher einen überarbeiteter GeForce 7 Ableger darstellt, ausgegeben wird. Grafikkarte und Prozessor arbeiten hier Hand in Hand, welches nur durch die hohe Flexibilität unter OpenGL erst möglich wird. Zudem könnte man die Leistung jeglicher Grafikbeschleuniger nutzen, um dank OpenCL die für Shaderoperationen gedachte Rechenpower unter „normalen“Programmiersprachen zugänglich zu machen.

Durch die große Verbreitung von diesen Plattformen ist in der nächsten Zeit vermehrt mit Crossplattform-Titeln zu rechnen, soweit dies die Lizenzbestimmungen der Unternehmen zulassen. Problematisch wird es jedoch, wenn die Leistung der Grafikprozessoren bald immer mehr auseinander klaffen werden, sodass es jetzt schon exklusive Titel für einzelne Modelle einer Plattform gibt. Sollte sich diese Entwicklung so fortsetzten, würde aus dem Hauptargument der Plattformverbundenheit nur noch ein ungefährer Standard, sodass die Spiele mit Optionen zur Anpassung an die Leistung der Geräte angepasst werden müssten (siehe Computerbereich).

Ob und vor allem wie schnell sich Open GL ES /OpenCL dank Android, Mac OS X sowie Symbian/Maemo durchsetzten wird bleibt spannend, wir werden euch natürlich auf dem Laufenden halten.

Quelle:Khronos Group