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

Aktuelle Zeit: Sa Apr 27, 2024 02:13

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Benutzung von glMaterial
BeitragVerfasst: Mi Jun 03, 2015 13:10 
Offline
DGL Member

Registriert: Sa Mai 16, 2015 17:25
Beiträge: 22
Programmiersprache: Pascal
Hallo,
ich versuche ein Objekt wie in den Tutorials im wiki mit Licht & Materialeigenschaften auszustatten.
Leider klappt das ganze eigentlich überhaupt nicht, obwohl der Code quasi 1:1 aus dem TUT übernommen wurde. Es wird einfach alles weiß dargestellt. Mir ist bewusst, dass ich nicht in jedem Frame immer Lichtfarbe/Materialfarbe im const-Teil liegen haben muss, es ist eher eine temporäre Lösung, um sicher zu gehen, dass auch keine andere Farbeinstellung irgendetwas übermalt (State-machine)
Sowohl GL_LIGHTNING, GL_LIGHT0 und GL_COLOR_MATERIAL sind "Enabled"


Code:
  1. procedure RenderLOD1;
  2. var i,j,k:Integer;
  3. const
  4.     mat_specular   : Array[0..3] of GlFloat = (0.5, 0.5, 0.5, 1.0);
  5.     mat_shininess  : Array[0..0] of GlFloat = (10.0);
  6.     mat_ambient    : Array[0..3] of GlFloat = (0.4, 0.4, 0.4, 1.0);
  7.     mat_diffuse    : Array[0..3] of GlFloat = (0.4, 0.8, 0.4, 1.0);
  8.     light_position : Array[0..3] of GlFloat = (100.0, 100.0, 100.0, 1.0);
  9.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.0, 1.0);
  10.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.0, 1.0);
  11. begin
  12. glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  13. glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  14. glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  15. glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  16.  
  17. glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  18. glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  19. glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  20. //...Eigentliche Zeichenroutine


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Mi Jun 03, 2015 16:00 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
ich versuche ein Objekt wie in den Tutorials im wiki mit Licht & Materialeigenschaften auszustatten.

Welches tut, Link ?

Wie sieht der Rest deiner Render-Routine aus, ich denke das der Fehler dort liegen kann.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Mi Jun 03, 2015 21:12 
Offline
DGL Member

Registriert: Sa Mai 16, 2015 17:25
Beiträge: 22
Programmiersprache: Pascal
Oh, da habe ich mich wohl etwas zu kurz gefasst...
Gemeint ist das hießige Tutorial Siehe hier.

Die restliche Renderprocedure hat eigentlich nicht mehr viel mit Farbgebung zu tunÖ

Code:
  1. procedure RenderLOD1;
  2. var i,j,k:Integer;
  3. const
  4.     mat_specular   : Array[0..3] of GlFloat = (0.5, 0.5, 0.5, 1.0);
  5.     mat_shininess  : Array[0..0] of GlFloat = (10.0);
  6.     mat_ambient    : Array[0..3] of GlFloat = (0.4, 0.4, 0.4, 1.0);
  7.     mat_diffuse    : Array[0..3] of GlFloat = (0.4, 0.8, 0.4, 1.0);
  8.     light_position : Array[0..3] of GlFloat = (100.0, 100.0, 100.0, 1.0);
  9.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.0, 1.0);
  10.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.0, 1.0);
  11. begin
  12. glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  13. glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  14. glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  15. glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  16.  
  17. glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  18. glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  19. glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  20.  
  21. glDisable(GL_TEXTURE_2D);       //um Farbe besser zu sehen
  22. for i:=TRXLOD[0].FirstObj to TRXLOD[0].FirstObj+TRXLOD[0].NumObj-1 do begin
  23.  glBegin(GL_TRIANGLES);
  24.  for j:=FirstFace[i] to FirstFace[i]+TRXObjects[i].FaceCount-1 do
  25.   for k:=3 downto 1 do begin
  26.     glColor3f(GetRValue(MTL[TRXObjects[i].MatID].Diffuse), //Farbe ist ein Grauton, aber definitiv kein weiß
  27.               GetGValue(MTL[TRXObjects[i].MatID].Diffuse),
  28.               GetBValue(MTL[TRXObjects[i].MatID].Diffuse));
  29.     glTexCoord2fv(@TRXPoints[TRXFaces[j,k]].U2);
  30.     glNormal3f(TRXPoints[TRXFaces[j,k]].nX/128-1,
  31.                TRXPoints[TRXFaces[j,k]].nY/128-1,
  32.                TRXPoints[TRXFaces[j,k]].nZ/128-1);
  33.     glVertex3fv(@TRXPoints[TRXFaces[j,k]].X);
  34.   end;
  35.   glEnd;
  36. end;
  37. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Mi Jun 03, 2015 21:25 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Im Tutorial sind noch folgende 3 Zeilen nach glLightfv:
Code:
  1.     glEnable(GL_COLOR_MATERIAL);
  2.     glEnable(GL_LIGHTING);
  3.     glEnable(GL_LIGHT0);


Zitat:
//Farbe ist ein Grauton, aber definitiv kein weiß

Hast du mal mit Konstanten probiert z.B. rot (1, 0, 0) ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Do Jun 04, 2015 08:13 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
GL_COLOR_MATERIAL <- Deaktivieren!
Es sorgt dafür, dass du über die Farbe Materialeigenschaften ändern kannst.
Brauchst du aber an der Stelle nicht.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Do Jun 04, 2015 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
GL_COLOR_MATERIAL <- Deaktivieren!

Wieso ist es im Tutorial aktiviert ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Benutzung von glMaterial
BeitragVerfasst: Do Jun 04, 2015 17:27 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Ich habe keine Ahnung weshalb es im Tutorial aktiviert wird. Es dient zum Umschalten der Materials in Abhängigkeit der gewählten Farbe.
Ansonsten:
Nimm kein OpenGL-Licht sondern schau in der Shadersammlung. Dort gibt es einen einfachen Lichtshader der nur aktiviert werden muss und dann das Licht übernimmt.
Bis auf das Einbauen vom Shader musst du nichts ändern und das funktioniert dann auch bei aktuellen OpenGL-Versionen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 47 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.113s | 17 Queries | GZIP : On ]