Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 20:32

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Okt 25, 2004 15:21 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
Also nun bin ich beim Licht. Ich habe ein prog in dem sowohl Bauteile mit Texturen belegt werden als auch nur farblich dargestellt werden. Klappte auch alles wunderbar, bis ich mich ans licht gemacht habe. Nun wird aus den farbigen Elementen immer nur weiß, wenn das Licht an ist (die Txturen sind immer korrekt zu sehen). Habe mich nun mehrmals durchs Licht-Tutorial gelesen, aber keine Anwort gefunden. Ich denke ich habe bei den Lichteinstellungen irgendetwas falsch gamacht...
Code:
  1.  
  2. const
  3.     mat_specular   : Array[0..3] of GlFloat = (1.0, 1.0, 1.0, 1.0);
  4.     mat_shininess  : Array[0..0] of GlFloat = (50.0);
  5.     mat_ambient    : Array[0..3] of GlFloat = (0.6, 0.6, 0.6, 0.6);
  6.     mat_diffuse    : Array[0..3] of GlFloat = (0.5, 0.5, 0.5, 1.0);
  7.  
  8.     light_position : Array[0..3] of GlFloat = (600, 600, 0.0, 1.0);
  9.     light_ambient  : Array[0..3] of GlFloat = (1, 1, 1, 1.0);
  10.     light_diffuse  : Array[0..3] of GlFloat = (1, 1, 1, 1.0);
  11.  
  12. begin
  13.   glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  14.   glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  15.   glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  16.   glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  17.  
  18.   glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  19.   glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  20.   glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  21.  
  22.   glEnable(GL_LIGHTING);
  23.   glEnable(GL_LIGHT0);
  24.  
  25. End;
  26. ...
  27. ..
  28. .
  29. .
  30. ..
  31. ...
  32.  
  33. If FarbenGL.Pfosten.Textur then
  34.   Begin
  35.      glEnable(GL_TEXTURE_2D);
  36.      glcolor3f(1,1,1);
  37.      glBindTexture(GL_TEXTURE_2D, tex[FarbenGL.Pfosten.TIndex]);
  38.   End
  39.   Else
  40.   Begin
  41.      glDisable(GL_TEXTURE_2D);
  42.      glcolor3f((FarbenGL.Pfosten.Farbe and $FF)/255,
  43.                  (FarbenGL.Pfosten.Farbe and $FF00 shr 8)/255,
  44.                  (FarbenGL.Pfosten.Farbe and $FF0000 shr 16)/255);
  45. End;
  46.  


Ich hoffe, mir kann wer helfen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 25, 2004 15:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Du hast vergessen glEnable(GL_COLOR_MATERIAL) aufzurufen.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 08:35 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
Danke, nun kommen die Farben. Aber es gibt nun ein Problem mit den Schatten. Die Schatten bei den Texturen werden nicht mehr richtig dargestellt, auch bei die Farbigen Objekten kommen keine Schatten, sondern nur Spiegeleffekte. Kann ich nicht mit GL_COLOR_MATERIAL und GL_TEXTURE_2D gleichzeitig arbeiten? Oder muss ich dann die Materialeigenschaften anders festlegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 13:38 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also Schatten dürften noch nie da gewesen sein.
OpenGL kennt ansich keine Schatten. Wenn du welche willst, musst du dir die aus Flächen(z.B.) bauen und dann drüberblenden. Was es für Möglichkeiten gibt, findest du im Wiki unter Techniken und Algorithmen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 14:08 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
Na ich meinte auch nicht die geworfenen Schatten, sondern die dunkleren Seiten an der lichtabgewandten Seite. Kann das sein, dass ich glMaterialfv auch noch mal für das farbige Material angeben muss? oder das, das einfach nur unterschiedlich interprtiert wird? weil die Texturen erscheinen bei mir matt. Die farbigen Flächen hochglänzend...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 14:41 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ahhhh...Das meinst du.

Also eigentlich ist OpenGL ne Statemachine. Das heißt, dass du das Material am Anfang setzt und es fortlaufend gültig ist, bis du ein neues Material setzt bzw. das Material deaktivierst. Wenn das wirklich ganz anders aussieht, dann musst du mal gucken, wo dein glMaterial aufruf steht. Wenn du wissen willst, welche Materialeigenschaften es gibt, dann kannste ja mal nach glMaterial im Wiki suchen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 15:01 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
Ja ich habe allen Elementen die gleichen Eigenschaften zugewiesen. Deshalb hat mich das ja gewundert...
Nun gut, ich werd mal ein bissel mit den Eigenschaften spielen und hoffen, dass es irgendwie klappt...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 26, 2004 20:14 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Um auch auf texturierten Objekten "Punktlichter" modulieren zu können, solltest du mal glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); verwenden - normalerweise wird nur die Texturfarbe selbst moduliert.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 27, 2004 08:52 
Offline
DGL Member

Registriert: Di Sep 28, 2004 15:46
Beiträge: 54
Na ich möchte es ja genau andersrum haben. So das das Licht auf den farbigen Flächen so ist, wie es jetzt auf den Texturflächen ist. Wenn ich glEnable(GL_COLOR_MATERIAL) ausblende kommen die Schatten und Lcihteffekte genauso, wie ich Sie haben will, nur leider die Farben nicht. Mit glEnable(GL_COLOR_MATERIAL) kommen die Farben aber das Licht ist ebend ein Punktlicht....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 27, 2004 09:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Dann schau dir mal das glColorMaterial Kommando an, mit dem du festlegen kannst, welcher Parameter des aktuellen Materials eigentlich von den glColorxx Kommandos verändert wird.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.013s | 14 Queries | GZIP : On ]