Was ist 2D OpenGL®?
Die Open Graphics Library® (OpenGL®) ist in erster Linie eine Programmierschnittstelle, mit der Softwareanwendungen schnell und effizient mit Grafikhardware interagieren und dreidimensionale (3D) Szenen erstellen können. Unter Verwendung von zweidimensionalen (2D) OpenGL®-Programmiertechniken kann die von der Bibliothek bereitgestellte Hardwarebeschleunigung die Leistung und manchmal die Einfachheit der Programmierung von Software verbessern, die nicht unbedingt 3D-Modelle oder -Transformationen verwendet. Die gebräuchlichste Methode zur Verwendung von 2D OpenGL® ist das Zeichnen von Vierecken oder Rechtecken, die mit einem Bild texturiert sind, wodurch effektiv ein Objekt im 3D-Raum aus einem Bild erstellt wird. Einmal erstellt, können diese Vierecke entweder mit strengen 2D-Methoden oder durch Transformation mit 3D-Matrizen für Spezialeffekte manipuliert werden, die sonst nur mit 2D-Rastergrafiken schwer zu erreichen wären. Es gibt einige Komplikationen, die die Verwendung einer 3D-Bibliothek mit sich bringt, wenn sie nur für 2D-Grafiken verwendet wird. Dazu gehört die Hypergenauigkeit, die das Isolieren einzelner Pixelpositionen erschwert, sowie die Forderung nach 3D-Hardware-Unterstützung für ein Programm, das möglicherweise nicht wirklich erforderlich ist es.
Viele Hardware- und Softwareentwickler stellen Treiber und benutzerdefinierte abstrakte Programmierschnittstellen (APIs) zur Verfügung, mit denen ihre jeweiligen Produkte vollständig mit der OpenGL®-Bibliothek kompatibel sind. Diese weit verbreitete Akzeptanz eines offenen Standards gibt Programmierern die Möglichkeit, auf einer Vielzahl von Systemen direkt auf die Hardware zuzugreifen. Durch die Hardwarebeschleunigung bei Verwendung von 2D OpenGL® kann ein Programm reibungsloser ausgeführt werden, als dies sonst möglich wäre. Diese Geschwindigkeit wird durch die Tatsache ausgeglichen, dass die Verwendung der OpenGL®-Pipeline für Grafiken sich stark von der Verwendung herkömmlicher 2D-Programmiermethoden unterscheiden kann, die im Allgemeinen kein Zustandsmaschinenmodell wie OpenGL® verwenden.
Die meisten 2D-OpenGL®-Programme verwenden flache Rechtecke, die in den gleichen Proportionen wie ein Texturbild erstellt werden, um die Grafiken darzustellen. Dies hat den Vorteil, dass das Rendern sehr schnell vonstatten geht und die Programmierung vereinfacht wird, sodass ein Teil der gleichen Logik wie bei rasterbasierten gepufferten Grafiken verwendet wird. Einige Effekte, wie z. B. das Skalieren eines Bildes, das Drehen eines Bildes oder das Umkehren eines Bildes, können mit OpenGL® wesentlich effizienter ausgeführt werden.
Es gibt bestimmte Faktoren, die dazu führen können, dass 2D-OpenGL®-Programme komplexer sind als andere 2D-Programme normalerweise. Einer dieser Faktoren ist die Genauigkeit der Pixel auf dem Display. OpenGL® setzt einen Teil des virtuellen Koordinatensystems nicht mit einem Pixel auf einem Bildschirm gleich, wie dies bei Rastergrafiken der Fall ist. Daher müssen für Bildschirmkoordinaten manchmal Gleitkommazahlen verwendet werden, um Lücken in der Anzeige oder seltsame Pixelplatzierungen zu vermeiden.
Ein weiteres Problem ist, dass OpenGL® die Verwendung einer Grafikkarte erfordert, um die Rendergeschwindigkeit zu erhöhen. Wenn eine Anwendung OpenGL® für die Anzeige einer Benutzeroberfläche oder eines Systemfensters verwendet, kann es bei Geräten ohne Grafikbeschleunigung zu Leistungseinbußen bei Grafiken kommen, die für den Endbenutzer sehr einfach erscheinen. OpenGL bietet auch keine systemeigene Unterstützung für die Anzeige von Text, was bedeutet, dass für die Anzeige großer Textbereiche eine angemessene Menge benutzerdefinierten Codes erforderlich sein kann.