Objekt mit Farbverlauf
Die Beschreibung der Vierecke enthält zusätzlich eine Farbdefinition für jede Ecke, sodass OpenGL einen Farbübergang auf das Viereck malt. Ist die Geometrie komplett definiert, dann kopiert »swapbuffers« das im Hintergrund gerenderte Bild in das Fenster und die erste mit OpenGL gezeichnet Geometrie erscheint (siehe Abbildung 1).

|
Abbildung 3: Die Kugel aus Listing 2 besteht aus 2600 Elementen. Trotzdem kann der Benutzer sie mit Maus und Tastatur ruckelfrei bewegen.
|
Die Prozedur »tclReshapeFunc« (Zeilen 52 bis 68) kommt bei jeder Größenänderung des Widget an den Start. Sie definiert die Ansicht auf das Modell. Die OpenGL-Utility-Bibliothek (Glu) enthält die Funktion »gluPerspective«, die dies bequem erledigt. Die Ansicht heißt Viewport (siehe Abbildung 2). Der Betrachter steht im Koordinatenursprung und erblickt einen durch Höhe und Breite des Fensters begrenzten Ausschnitt des 3D-Modells. Der in Zeile 62 gesetzte Winkel von 46° entspricht dem Blickwinkel des menschlichen Auges.
Der Viewport zeigt nur Modellteile, die im angegebenen Abstand (Zeilen 64 und 65) vom Betrachter liegen. Anders als bei der realen Fotografie werden Teile davor und dahinter nicht unscharf, sondern komplett unsichtbar.
Das Listing 1 hat aber zwei wesentliche Mängel. Einerseits bleibt die dritte Dimension unsichtbar, denn der Betrachter sieht das Modell immer aus der gleichen Perspektive. Das zweite Problem ist die Performance. Die Prozedur »tclDisplayFunc« definiert das 3D-Modell bei jedem Bildaufbau neu. Bei kleineren Modellen klappt das noch problemlos, aber schon mit wenigen 100 Dreiecken wird der Ablauf einfach zu langsam.
Bewegung
Abhilfe schafft ein zweites Beispiel, das eine Kugel aus etwa 2600 Dreiecken erzeugt (Abbildung 3). Diese Kugel bei jedem Bildaufbau neu erzeugen würde aber viel zu viel Zeit kosten. Deshalb legt die Prozedur »tclCreateFunc« (Listing 2a) eine so genannte Display-Liste an. Sie enthält fertige Geometrien, die das Programm später beliebig oft aufrufen darf. Die Verwendung der Display-Liste verbessert die Performance erheblich, denn die Geometrie zu erzeugen dauert je nach Anzahl der Dreiecke 10- bis 1000-mal länger, als sie anzuzeigen.
01 # Startwerte setzen und Display-Liste erzeugen.
02 # Wird beim Erzeugen des Fensters aufgerufen
03 proc tclCreateFunc {toglwin} {
04 # Schwarzer Hintergrund
05 glClearColor 0.0 0.0 0.0 0.0
06
07 # Ein bischen Tuning
08 glClearDepth 1.0
09 glEnable GL_DEPTH_TEST
10 glShadeModel GL_FLAT
11 glDepthFunc GL_LEQUAL
12 glHint GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST
13
14 kugel 100 ;# Display-Liste einmalig erzeugen
15 }
|
Die Prozedur »kugel« (Listing 2b) erzeugt erst eine neue Display-Liste und füllt sie dann - ähnlich wie im ersten Beispiel - mit Dreiecken. Dabei haben die Dreiecke abhängig vom Breitengrad jeweils eine andere Farbe, hierzu verwendet das Skript die Prozedur »hls2rgb« (zu finden auf dem FTP-Server des Linux-Magazins [13]).
01 proc kugel {radius} {
02 set kante 10
03 set ::displayliste [glGenLists 1]
04 glNewList $::displayliste GL_COMPILE
05 for {set l 0} {$l <= 360} {incr l 5} {
06 for {set b -90 } {$b <= 90} {incr b 5} {
07 # Position im Bogenmaß
08 set lr [expr {$l/180.0 * $::PI}]
09 set br [expr {$b/180.0 * $::PI}]
10 # Farbe für das nächste Element setzen
11 set hue [expr {sin($br/3.0)}]
12 eval glColor3f [hls2rgb $hue 1 1]
13
14 # Dreieck einfügen
15 glBegin GL_TRIANGLES
16 glVertex3f
17 [expr {$radius*cos($lr)*cos($br)}]
18 [expr {$radius*sin($lr)*cos($br)}]
19 [expr {$radius*sin($br)}]
20 glVertex3f
21 [expr {$radius*cos($lr)*cos($br)}]
22 [expr {$radius*sin($lr)*cos($br) +$kante}]
23 [expr {$radius*sin($br)}]
24 glVertex3f
25 [expr {$radius*cos($lr)*cos($br)}]
26 [expr {$radius*sin($lr)*cos($br)}]
27 [expr {$radius*sin($br) +$kante}]
28 glEnd
29 }
30 }
31 glEndList
32 }
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
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)
|
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.
|