Normalerweise übernimmt das Betriebssystem die Aufgabe, grafische Benutzeroberflächen (auch GUIs – Graphical User Interfaces genannt) darzustellen, indem es die Oberflächen entsprechend einer vorgegebenen Beschreibung über das oben beschriebene Verfahren in den Backbuffer malt und damit anzeigt. Dazu werden durch das Betriebssystem dynamisch berechnete oder vorgefertigte Farbmuster (gemeinhin bekannt als Bilder) für die entsprechenden Bestandteile der GUI (inklusive Buchstaben von Texten) an ihre jeweils passenden Stellen gezeichnet.
Manchmal reichen diese vorgefertigten Routinen des Betriebssystems jedoch nicht aus und ein Programm benötigt seine eigenen Funktionen, um grafische Inhalte darzustellen – das prominenteste Beispiel hierfür sind sicherlich die Computerspiele. Zu diesem Zweck stehen umfangreiche Programmbibliotheken zur Verfügung, so etwa die bekannten Grafikbibliotheken DirectX und OpenGL, welche ein Programm dabei unterstützen, Grafiken nach ganz individuellen Vorgaben möglichst performant auf den Bildschirm zu bringen.
Schauen wir uns das einmal am Beispiel eines 2D-Computerspiels an. Dem Spiel selber ist bekannt, welche Grafik an welcher Stelle auf dem Bildschirm angezeigt werden soll. Jede Grafik liegt dabei z.B. in Form einer einfachen Bitmap, also als simple Sammlung von Farbwerten für die Pixel der Grafik (nicht zu verwechseln mit dem BMP-Format), vor. Das Spiel zeichnet nun mit Hilfe von z.B. DirectX seine Grafiken an die gewünschte Position, indem es die Bitmaps an die passenden Stellen im Arbeitsspeicher der Grafikkarte schreiben lässt. Die verwendete Grafikbibliothek unterstützt hier insofern, als dass sie dieses Schreiben möglichst performant und mit geringem Programmieraufwand für den Programmierer erlaubt; so werden oft zu zeichnende Bitmaps zum Beispiel bereits “vorgeladen” und in freien Stellen des Grafikkarten-Arbeitsspeichers zwischengespeichert. Von diesen müssen sie nur noch an die gewünschte Stelle im Backbuffer kopiert werden, was weitaus schneller funktioniert als ein Laden und Schreiben aus dem Hauptspeicher oder, noch schlimmer, der Festplatte oder CD (dieser Vorgang wird auch Blitting genannt).
Neben den Werten für die Rot-, Grün- und Blauanteile eines Pixels kann eine Bitmap (und auch Front- und Backbuffer) übrigens auch über einen sogenannten Alpha-Wert verfügen, mit welchem die Transparenz eines Pixels bestimmt wird. Auf diese Art lassen sich auch überlappende Grafiken problemlos darstellen.
Von Interesse ist nun sicherlich für viele Leser, wie denn nicht nur 2D-, sondern auch 3D-Grafiken auf den Bildschirm kommen. Damit beschäftigen wir uns aber das nächste mal, da hierfür (mal wieder) einige mathematische Grundlagen notwendig sind.
Kommentare (8)