previous up next
Vorherige Seite: Code Aufwärts: NiX OpenGL Demo Nächste Seite: Sound

Grafik

Die Grafik wird mit OpenGL erstellt. OpenGL ist ein Grafikstandard für 2D und 3D Grafik und wird mittlerweile auf fast jeder Plattform unterstützt. OpenGL ist exakt spezifiziert und besteht aus einem Schichtenmodell. Die Grafikhardware hat verschiedene Möglichkeiten sich in die verschiedenen Schichten einzuklinken. Damit ist es möglich, je nach Hardware, für die Darstellung notwendige Berechnungen auf die Grafikhardware zu verlagern und somit die CPU zu entlasten.

Die simpelste Hardware stellt nur einen farbigen Framebuffer zur Verfügung, dessen Pixel von der CPU bearbeitet werden. Dies ist die klassische VGA-Karte. Seit 1996 ist die zweite Generation von 3D Karten auf dem Markt, welche texturierte Polygone (meistens 2D) darstellen können (bekannt sich 3DFX VooDoo und NVidia TNT). Mit diesen Karten ist eine beachtliche Steigerung der 3D Grafikperformance verbunden, da bei einem Renderingvorgang der Großteil der Berechnungen eben auf die Darstellung von Polygonen entfallen. Seit Ende 1999 gibt es die dritte Generation von 3D Karten, welche unter dem Stichwort T&L - Transform and Lighting verkauft werden. Diese Karten können bereits 3D Vektoren mit den bekannten Matrizentransformationen bearbeiten und die Beleuchtung berechnen. Im Idealfall kann man also eine komplette 3D Geometrie inkl. Texturen an die Grafikkarte übergeben und darstellen lassen. Die CPU wird nicht mehr benötigt. Grafikkarten mit NVidia GeForce oder ATI Radeon zählen zu dieser Art.

Die T&L Hardware hat jedoch den Nachteil, daß sie nur mit statischen 3D Modellen arbeiten können. Die neusten Entwicklungen (GeForce 3) bieten jedoch die Möglichkeiten auch die Texturen oder 3D Vektoren mit Programmen, die auf der Grafikhardware laufen, zu verändern. Die Hersteller sprechen in dem Zusammenhang davon, das die Grafikhardware nun eine GPU enthählt.

Der Vorteil von OpenGL ist, das der OpenGL Treiber der Grafikhardware selbstständig die Art der Hardwarebeschleunigung wählt. Das OpenGL Programm wird immer die gleiche Ausgabe erzeugen3 , egal ob man eine VGA, TNT oder Geforce 3 Hardware hat. Lediglich die CPU muß entsprechend mehr berechnen.

OpenGL kann drei Primitive zeichnen. Punkte mit unterschiedlicher Größe, Linien unterschiedlicher Breite und Polygone. Linien und Polygone bestehen debei aus Punkten Vertex genannt. Jeder Vertex kann eine unterschiedliche Färbung haben, wodurch Linien und Polygone schatiert werden. Zusätzlich kann auf die Linien und Polygone eine Textur projeziert werden, welche mit den Vertexcolors verknüpft werden kann. Damit sind vielfältige Beleuchtungs- und andere Effekte möglich.4 Im Demo ist dies sehr gut an der Anfangszene mit der Erde und dem Swoosh-Effekt, mit den transparenten Würfeln zu sehen.

Texturen sind in der Regel zweidimensionale Bilder5, die zur Detailverbesserung benutzt werden. Ein Polygon erhält so den sichtbaren Eindruch zusätzlicher Struktur, wobei der Einsatz einer Textur weniger Berechnungen erfordert als der entsprechende Einsatz zusätzlicher Polygone.

Die Texturen haben ganz unterschiedliche Auflösungen je nach Anwendungsbereich. Die Textur für die Erde hat eine Größe von 2048x1024 Pixel. Der Zeichensatz besteht aus 96 Texturen, für jedes Zeichen eine, mit 128x128 Pixeln.

Die Bewegung der Kamera und die Bewegung der Würfel im Swoosh Effekt sind Splines.6