Aufgrund meines Lichtproblemes kopiere ich zur zeit Quellcode aus Beispielen. Füge ich den folgenden Code in meine Zeichenroutine (am Ende) Sind alle Schatten leuchtend grün und die Kugel ist gelb wie meine Objekt die ich davor zeichne.
glPushMatrix; // Generate a sphere using the OpenGL utility Library SphereQuadratic := gluNewQuadric(); // Create A Pointer To The Quadric Object (Return 0 If No Memory) (NEW) gluQuadricNormals(SphereQuadratic, GLU_SMOOTH); // Create Smooth Normals (NEW)
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
OpenGL ist ja ne Statemachine, also hast du evtl. vorher irgendwo diese gelbe/grüne Grundfarbe gesetzt, die sich dann natürlich auf alle nachfolgenden Objekte auswirkt bis sie überschrieben wird.
P.S. : Bitte beschreib doch genauer was du machst, nicht jeder hat dein anderes Thema gelesen und auch hier schreibst du nicht genau was du machst, da ist Ursachenforschung schwierig.
Hallo hier vielleicht mal ein paar Bilder. Tut mir leid aber man kann ja nicht immer den gesamten Quelltext kopieren.
Bild OK:
Dateianhang:
Bild OK.JPG
Bild nach Zusatzt Quellcode (siehe Listing)
Dateianhang:
Bild Nicht OK.JPG
Das mit den Zuständen mag ja stimmen aber die Farbe der Kugel wird doch auf Rot gesetzt und wieso sind die Schatten grün? Bild rotiert um Kugel zu sehen:
Dateianhang:
Bild mit Kugel.JPG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Setz mal alle Lichtteile explizit, also auch den ambienten und diffusen Anteil, den du in deinem Code ja nicht setzt. Evtl. hast du da irgendwo schonmal falsche Werte gesetzt, denn der grüne "Schatten" deiner Kugel deutet darauf hin dass dein ambienter Farbanteil grün ist. Also setz dass alles mal explizit auf normale Werte, denn evtl. hast du das vorher auf grün gesetzt, oder dein Treiber baut mist und hat falsche Vorgabewerte dafür. Auch die Materialanteile für deine Kugel solltest du mal explizit setzen.
Wie mann sieht experimentiere ich zur Zeit. Was sind denn Standard Werte? Bei diesen Werte für Lichtquelle 0 und den gleichen für Lichtquelle 1 Ist alles grün (cllime) kein Schatten nichts mehr. Änderung nur Setzen von Ambiente und Diffuse.
glPushMatrix; // Generate a sphere using the OpenGL utility Library SphereQuadratic := gluNewQuadric(); // Create A Pointer To The Quadric Object (Return 0 If No Memory) (NEW) gluQuadricNormals(SphereQuadratic, GLU_SMOOTH); // Create Smooth Normals (NEW)
Einfügen dieser Zeilen bewirkt schon die Grüne Farbe bei meine Projet ohne den zusätzlichen Quellcode mit der zweiten Lichtquelle. Ändern der Parameter von 0.5 auf z.B. 1.0 bewirkt garnichts.
Code:
light_ambient : Array[0..3] of GlFloat = (0.2, 0.2, 0.2, 1.0); light_diffuse : Array[0..3] of GlFloat = (0.5, 0.5, 0.5, 1.0);
Du willst ein Spotlicht, richtig? Zumindest setzt du da GL_SPOT_DIRECTION, also gehe ich mal davon aus. Im Wiki findet sich zu GL_POSITION:
Zitat:
Wenn die w-Komponente 0.0 ist, wird die Lichtquelle als gerichtete Lichtquelle behandelt, wobei GL_POSITION die Richtung darstellt.
Setze also deine Position mal auf ( 1.0, 1.0, 1.0, 1.0 ). Damit hättest du ein Punktlicht. Um daraus ein Spotlicht zu machen musst du GL_SPOT_CUTOFF setzen. Dieses ist nämlich standardmäßig auf 180, was die Spot-Funktion deaktiviert.
Deine aktuelle Position (0,0,0,0) bewirkt ein direktionales Licht ohne Richtungsangabe...das kann nicht funktionieren.
A directional light emits light from an infinite distance. The ray emitted are all parallel and have the same direction (defined by the property GL_POSITION).
oder mit Worten unseres Wikis:
Zitat:
Wenn die w-Komponente 0.0 ist, wird die Lichtquelle als gerichtete Lichtquelle behandelt, wobei GL_POSITION die Richtung darstellt.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.