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

Aktuelle Zeit: Di Jul 15, 2025 23:39

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Probleme mit glMaterialColor
BeitragVerfasst: Mi Sep 23, 2009 09:31 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
Hallo liebe DGLer,

Ich habe in meinem Projekt einen Viewport in mehrere Bereiche geteilt, darauf befinden sich jeweils eine Sphere welche mit einer Textur versehen ist. Nun möchte ich diese Spheres mit Linien, sprich cylindern umgeben, jedoch bekommt meine Textur auf den Kugeln beim glEnable(GLMaterialColor) das selbe Rot gemischt mit der Textur was ich für die Cylinderfarbe vorgesehen habe. Wie stelle ich diese beiden Objekte unterschiedlcih voneinander dar?

Hier ist der Ausschnitt meines SourceCodes, in dem das gemacht wird:

Code:
  1.  
  2.     for i := 0 to FNumberfigures-2 do
  3.         begin
  4.            glViewport(vport[i,1], vport[i,2], min(w,h), min(w,h));
  5.        //   glLightfv(GL_Light0,GL_Position,@light_position);
  6.           glLightModelfv(GL_Light_Model_Ambient,@model_ambient);
  7.           glEnable(GL_Lighting);
  8.           glEnable(GL_Light0);      
  9.           glEnable(GL_TEXTURE_2D);
  10.           gObj  := gluNewQuadric;
  11.          
  12.           gluQuadricDrawStyle(gObj ,GLU_FILL);
  13.           gluQuadricTexture(gObj,true);
  14.           if length(FMyTexture)>0 then
  15.             glBindTexture(GL_Texture_2d,FMyTexture[i]);
  16.        
  17.           gluSphere(gObj,1,64,64);
  18.  
  19.          //Dieser Block funktioniert nicht, so wie er soll
  20.           glEnable(GL_COLOR_MATERIAL);  
  21.           glColor3f(1,0,0);
  22.           gObj2 := gluNewQuadric;
  23.           gluCylinder(gObj2,1.01,1.01,0.1,32,32);
  24.           glRotatef(90,1,0,0);
  25.           gluCylinder(gObj2,1.01,1.01,0.1,32,32);
  26.           glDisable(GL_COLOR_MATERIAL);
  27.          
  28.  
  29.         end;
  30.  


Vielen Dank für Eure Hilfe im Vorraus,

heavenssake007


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 23, 2009 19:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Hallo,

ich hab mich zwar nicht intensiv mit ColorMaterial beschäftigt, aber ich glaube es bewirkt etwas anderes als du willst. Wenn GL_COLOR_MATERIAL enabled wird, kannst du mit einem Call von glColorMaterial() festlegen, mit welchem Material das Licht-Material-Modell die nachfolgenden Vertices-Farben berechnen soll.

Die Grundfarbe glColor solltest du (fast) überall mit vollem Effekt setzen können, da diese (fast) immer mit dem bisherigen Ergebnis multipliziert wird. Bei dir liegt das Problem darin, dass du erwartest, dass glColor beim Neuzeichnen, wenn die Prozedur/Schleife wieder oben anfängt, wieder [1, 1, 1] ist. Da OpenGL allerdings eine Statemachine ist, bleibt die Einstellung [1, 0, 0] aber dauerhaft bestehen.

Daher würde ich vorschlagen, entfern mal glEnable(GL_COLOR_MATERIAL)
und ersetze glDisable(GL_COLOR_MATERIAL) durch glColor3f(1,1,1);

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 24, 2009 10:29 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
Vielen Dank,

es funktioniert!!!


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 13 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.008s | 17 Queries | GZIP : On ]