| |
|
|
Jörg Sellmeyer | Lektion 2: Die ersten Polygone - Als Erstes benöltigen wir ein Fenster per die OpenGL-Ausgabe. Dieses kann das Hauptfenster eines XProfan-Programmes sein oder ein mit Create() erzeugtes Fenster:
- Die Hintergrundfarbe wird auf 0,0,0 (= schwarz) eingestellt und die vierte 0 zeigt an, daß wir zunächst keinen Beleuchtungseffekt benutzen.
- Die OpenGL-Welt wird an die Fenstergröße angepaßt und die Perspektive so eingestellt, daß die Welt eine Ausdehnung von 0.1 bis 100 hat. Das bedeutet, daß Objekte, die näher dran oder weiter weg sind, nicht dargestellt werden.
- Hinweis: Es werden tatsächlich noch eine Reihe weiterere Grundeinstellungen vorgenommen,
- Die übrigen Zeilen des Hauptprogrammes sorgen dafür, daß beim Drücken der Escape-Taste
- Das Wichtigste des Programmes ist die Prozedur,
- Die Szene wird gelöscht und die 3-D-Welt an die aktuelle Fenstergröße angepaßt.
- Negative z-Werte verschieben den Ursprung in den Bildschirm hinein., positive auf den Betrachter zu.
- Wählt man kleinere Werte, sind die Objejkte näher und größer,
- Um unser nächstes Objekt zu zeichnen, stellen wir einen anderen Ursprungspunkt per die Zeichnung ein.
Lektion 3: Jetzt kommt Farbe ins Spiel - Bislangf sind die beiden Objekte nur langweilig in weiß.
- Solange kein Tranzparentmodus eingestellt ist, hat er keine Bedeutung.
Lektion 4: Rotation - Da es jetzt um Bewegung geht, muß die Szene ja ständig neu gezeichnet
- die das Programm in Zusammenarbeit mit der Grafikkarte tatsächlich schafft.
- Vor dem Programmende muß der Timer noch entfernt werden.
Lektion 5: 3D-Objekte
Lektion 6: Texturen und Tastatursteuerung I
Lektion 7: Filter und Tastatursteuerung II
- Mit den Kusortasten können wir den Würfel drehen - aber da wir ja die Auswirkung des Filters untersuchen wollen, nehmen wir drei mal das selbe Bild. oder dreimal
- Damit bei längerem Drücken auf Taste "F" die Filter nicht so rasch wechseln, daß wir sie nicht begutachten können, reagieren wir auf "F" (code 70) nur, wenn es gerade nicht gedrückt ist, fp% also auf 0 steht. In diesem Fall wird dann fp% auf 1 gesetzt, um anzuzeigen, daß die Taste jetzt gedrückt ist.
- Die übrigen Anpassungen im Hauptprogramm zur veränderten Steuerung des Würfels durch die Kursortasten/BildHoch/BildRunter dürften selbsterklärend sein.
Lektion 8: Transparenz-Effekte - Es kann nämlich nicht garantiert werden, daß die gerade nicht sichtbaren Seiten zuerst gezeichnet werden.
- Am Listing hat sich nicht sehr viel verändert.
- texture%[0] = oGL("LoadTextureBMP","glass.bmp",1) nur mal 'ne Frage: warum Glas auf Englisch?
- Mit Kursor hoch/runter können wir die Sternengalaxie kippen und mit BildHoch/BildRunter hgeranzoomen bzw. entfernen.
- rnd(255)/255 ergibt einen Wert zwischen 0 und 1. Das geht ja mit Rnd() mittlerweile noch eleganter.
- Nun wird der Punkt zum zeichnen des Sterne auf die Entfernung des Sternes vom Nullpunkt der x-Achse gestellt.
- egal wie wir unser Koordinatensystem gerade gedreht haben.
- Wir benötigen die Drehungen des Koordinatensystems schließlich nur, um zu ermitteln, wo unser Stern hingezeichnet werden muß. Haben wir den Punkt ermittelt, können wir es zum Zeichen wieder zurückdrehen.
- Das bewirkt, daß die weiter entfernten Sterne sich schneller bewegen.
- Und schließlich verringern wir il valore wie weit die Sterne vom Mittelpunkt entfernt sind. Besser: verringern wir il valore, der die Entfernung der Sterne vom Mittelpunkt bestimmt.
Lektion 10: Wandern durch 3D-Welten mit XPGL - Da sie(?) aber letztlich immer zwei Dreiecke ein Rechteck bilden, benutzen wir hier gleich Rechtecke.
- Mit den Kursor rechts/links drehen wir uns und verändern unsere Blickrichtung. Mit Kursor hoch/runter gehen wir vorwärts bzw. rückwärts. Wie kommst Du eigentlich auf Kursor???
- Mit "B" können wir spasseshalber auch den Transparentmodus ein- und ausschalten.
- Wird die Taste Kursor Hoch gedrückt geht es vorwärts. Das taucht noch weitetere Male auf und Du solltest es unbedingt ändern!!
- Zum Rückwärtsgehen (Kursor runter) stzeht dann statt des "-" ein "+". Durch verändern des Multiplikators 0.05 kann man die Geh-Geschwindigkeit anpassen.
- Die folgenden 6 Zeilen mit dem Walkbias berechnen das wiegende Auf und Ab beim gehen.
- Jeder druck auf die Rechts- oder Links-Taste dreht den Blickwinkel um 2 Grad.
- Der zweite Parameter gibt an, wieviele Punkte gezeichnet werden.
- Der erste Paramater gibt an, aus was per Objekten die Welt besteht.
- In unserem Fall sind es aber Rechtecke und Quadrate.
- Es muß also immer vorhanden sein.
- Die drei Werte vor dem Semikolon sind die drei Koordinaten des Punktes. Die zweite Koordinate ist hier überall 0, also liegt das Quadrat flach in Höhe 0 im Raum.
- Da eine Ecke des Vierecks dem Punkt 0/0 der Textur entsprucht
- Um sich das mal optisch klar zu machen, empfiehlt es sich, bei "DrawXPGL" einmal als letzten Parameter die 4 einzusetzen, damit nur der Boden gezeichnet wird. Zum Üben und Verstehen lohnt es sich durchaus, einmal mit verschiedenen Werten per die Texturkoordinaten herumzuexperimentieren und zu schauen, was passiert.
- die dieselbe Welt aus Dreiecken erzeugt und dieselben Daten enthält,
Lektion 12: Listen mit Kisten
- Leider wird in dieser Lektion der Vorteil der Displaylisten nicht ganz so dramatisch deutlich, wie im Original. Das liegt im Wesentlichen daran, daß in XProfan das Zeichnen
- Bei Displaylisten geht es darum, eine Reihe von immer wiederkehrenden OpenGL-Anweisungen zusammen zu fassen. ist in diesem Fall eher ein Wort oder sollen da tatsächlich Anweisungen zusammen gefasst werden?
- Ein, meist hinzunehmender, Nachteil sei auch genannt:
- Daher ist es auch wichtigt, nicht mehr benötigte Displaylisten wieder frei zu geben.
- In unserem Beispiel bauen wir mit Kisten einen Q-Bert-ähnliches Spielfeld. Was ist denn Q-Bert??
- Da diese per alle Kisten gleich sind, fassen wir sie diese in einer kleinen Displayliste zusammen.
Lektion 13: Bitmap-Fonts - Variablen per die Fontnommer (font&) und die Farb- und Positionswechsel werden deklariert.
Lektion 14: 3D-Fonts - Natürlich wirken zweidimensionale Bitmapfonts in einer 3D-Welt ziemlich flach.
- Und so sieht es aus:
- Der einzige Unterschied zur Lektion 13 ist hier, daß die oGL-Funktion "OutlineFont" verwandt wird. Diese hat als zusätzlichen Parameterr die Tiefe der Buchstaben.
- Hier ist der einzige Unterschied zu Lektion 13, dass die Positionierung Lustig - nur drei Zeilen weiter nimmst Du dass.
- Natürlich kann der das Textobjekt nun auch mit "Rotate" gedreht werden.
Lektion 16: Nebel-Effekte - In unserem beispiel soll es wie wirklicher Nebel aussehen.
- "F" schaltet zwischen den Filtermodi um und "G" schaltet den Nebel ein oder aus. Mit den Kursortasten kann die Kiste in Drehung versetzt werden und mit BildHoch und BildRunter wird sie nach vorne und hinten beweht.
Lektion 18: Komplexe Objekte (Quadratics) - Der letzte Parameter gibt an, daß sie aus 32 Segmenten gezeichnet wird.
- Hier wird eine flacher Ring gezeichnet, der einen Innenradius von 0.5 und einen äußeren Radsius von 1 hat.
- Für einen Zylinder gilt das Gleiche wie per die Röhre, mit dem Unterschied, daß der Zylinder oben und unten durch einen Deckel abgeschlossen ist.
- Auch hier kann man durch niedrigere Werte sehr interessante Formen erziehlen. oder doch erziehen?
- Im Falle einer Scheibe sieht der Teil aus wie ein Tortenstück. Lustigerweise bemängelt OO hier das Tortenstück und schlägt so Sachen wie "Totenstück" und "Totenstarre" vor. Brrr...
- Die übrigen beieden Parameter sind der Anfangs- und der Endwinkel des Kreisteils in Grad.
- Bei all diesen Objekten lohnt es sich, mit dien Parametern herumzuspielen, um zahlreiche unterschiedliche Objekte zu erzeugen.
Lektion A: Welcher Planet ist das? - Die Texturen werden geladen: Sonne, Mars, Erde, Mond und Hintergrund (Sterne).
- welche OpenGL-Objekte an den entsprechenden Bildschirmkoordinaten gezeichnet werden müßten. Mit der oGL-Funktion "EndTest" wird der Testmodus beendet und die Objektnummer des dem Betrachter am Nächsten liegendenden OpenGL-Objektes an dieser Position zurückgegeben. Dieses Objekt ist logischerweise das Objekt, das wir zum Testzeitpunkt an der bewußten Position sehen.
- Die Vergabe der Objektnnummern erfolgt mit der oGL-Funktion "SetName".
- OpenGL kann zwar auch mit Gradzahlen circa 360 und unter 0 korrekt umgehen (und rechnet intern modulo 360), aber so gehen wir sicher, daß es beim Programm nicht nach einigen Jahren Laufzeit zu einem Überlauf kommt.
- Das gleiche wie oben, nur hier per die Rotation der Planeten um die Sonne. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 05.04.2012 ▲ |
|
|
|
|
RGH | Jörg Sellmeyer (05.04.12)
nur mal 'ne Frage: warum Glas auf Englisch?
Auch die Bitmaps des Kurses entstammen weitgehend der englischen Vorlage!
Saluto Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 02.06.2013 ▲ |
|
|
|
|
RGH | |
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 02.06.2013 ▲ |
|
|
|