Textur mit Zusatz
Neben der darzustellenden Bitmap enthalten Texturobjekte weitere Informationen wie Höhe, Breite und Typ. In Zeile 32 verbindet »glTexImage2D« diese Daten mit dem Bild aus dem vorher erzeugten OpenGL-Vektor. Texturobjekte liegen üblicherweise im Speicher der Grafikkarte, folglich kann die Karte sie ohne Zugriff auf den Hauptspeicher verwenden und auf der Geometrie anbringen. Der Code in Zeile 35 löscht daher den OpenGL-Vektor, der das Bild enthält.
Anders als zum Beispiel Objekte in Java mit dessen Garbage Collection, verschwinden bei OpenGL einmal angelegte Variablen nicht von selbst. Es empfiehlt sich daher, für Zwischenschritte angelegte Variablen wie den vorliegenden Vektor explizit zu löschen. Andernfalls müllen sie den Haupt- oder (schlimmer) den Grafikkartenspeicher voll und bremsen die Anzeige.
Als Nächstes erzeugt das Programm die Geometrie und dekoriert sie mit der Textur (Zeilen 38 bis 42). Für eine saubere Fläche mit Textur benötigt OpenGL die Knotenpunkte der Dreiecke, den Normalenvektor an den Knotenpunkten und die Position in der Bitmap. Der Normalenvektor ist ein Vektor der Länge 1. Er steht senkrecht zur Oberfläche und definiert damit deren Lage. OpenGL braucht ihn, um die Beleuchtung und Spiegelung zu berechnen.
Im Beispiel baut die Funktion »renderSphere« ab Zeile 46 eine Kugel aus mehreren Dreiecksstreifen auf (Abbildung 1a), die Anzahl der Streifen bleibt dabei beliebig wählbar. Die vollständige Version findet sich auf dem FTP-Server [3], in Listing 1 ist nur der Ausschnitt für die Texturbehandlung zu sehen.
Der Winkel »theta2« entspricht dem Höhengrad, »theta3« dem Längengrad (Zeilen 49 bis 51). Zuerst berechnet das Skript den Normalenvektor. Bei einer Kugel ist das denkbar einfach. Danach definiert »glTexCoord2f« (Zeile 55), welcher Punkt aus der Textur auf welche Stelle der Geometrie kommt. Die Kugel erfordert eine Projektion, um die ebene Textur auf die gebogene Oberfläche zu legen. Das Beispiel setzt auf eine einfache Zylinderprojektion.
Steiniges Muster
Das Ergebnis ist in Abbildung 1c zu bewundern. Das rechteckige Gitter aus der Bitmap (Abbildung 1d) ist an den Polen zu Dreiecken verzerrt. Zum Schluss gibt »glVertex3f« die Koordinate eines Gitterpunkts auf der Kugel an, damit ist die Definition eines Punktes komplett.

|
Abbildung 1d: Die Oberflächenstruktur eines Steins ist unabhängig von dessen Form. Ein zweidimensionales Foto der Oberfläche genügt daher als Textur.
|
Der weitere Quelltext definiert mit diesen Punkten Dreiecke und stellt damit die Kugeloberfläche zusammen. In Abbildung 1a sind als Demonstration nur die Kanten dargestellt. Die Textur (Abbildung 1d) gibt der sehr einfachen Geometrie ein recht realistisches Aussehen (Abbildung 1c).
| Whitepaper |
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|