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

Aktuelle Zeit: Fr Jul 18, 2025 07:57

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Keine Farbe mit glColor
BeitragVerfasst: Mi Aug 04, 2010 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Hi,

ich bin gerade dabei Colorpicking zu implementieren als Selektionsmethode, aber es gibt etwas Ärger: Alle Objekte sind grau im selben Farbton. Daher funktioniert das Colorpicking nicht. Ich habe nichts weiter gemacht als beim zusätzlichen Renderdurchlauf das Licht auszuschalten und keine Texturen zu zeichnen, anstelle der Texturen habe ich glColor3ub(TexID*8, 0, 0) bei allen gluSpheres reingebastelt. Aber wie gesagt sind sie alle grau. Farbtiefe ist 32 Bit, gibt es irgenwelche Einstellungen die man beim Colorpicking noch ändern sollte ? Ich habe die gewöhnliche Render aktiv, die zusammengefasst und gekürzt diese ist:
Code:
  ModelView(SCREEN_WIDTH, SCREEN_HEIGHT);
  gluLookAt(fKeyStrafe, 0.0, fZoom, fMouseX, fMouseY, 0.0, 0.0, 1.0, 0.0);
  glRotatef(110.0, 1.0, 0.0, 0.0);

  glPushMatrix;
    PosP := EllipsePos(RotVenus/v, ta, 224.701, (-0.97-x)/g, 0.0068, 3.395, 0.0, True);
    DrawSphere(RotVenus, 0.13/2, 1.0, 177.3, @PosP, 3, False, Sel);
  glPopMatrix;

  ...

Ich kann Euch höchstens noch DrawSphere anbieten in der Hoffnung, dass da ein Fehler drinnen ist (in letzter Zeit sind meine Fragen immer so unerklärlich, ich weiß einfach nicht woran es liegt und welche Details ich Euch noch nennen sollte):
Code:
// Kugel zeichnen
procedure TSolar.DrawSphere(AngleX, Radius, Scale, Inclination : Real; Position : pVec3f; TexID : Byte; ShowAxes, Sel : Boolean);
var Sphere : pGLUQuadricObj;
begin
  // Verschieben, Rotieren, Skalieren
  glPushMatrix;
  glTranslatef(Position[0], Position[1], Position[2]);
  glRotatef(AngleX, 0.0, 1.0, 0.0);
  glRotatef(90.0, 1.0, 0.0, 0.0);
  glRotatef(Inclination, 1.0, 0.0, 0.0);
  glScalef(Scale, 1.0, 1.0);
  // Quadric erstellen
  Sphere := gluNewQuadric;
  // Selektion
  if Sel then
    glColor3ub(TexID*8, 0, 0)
  else
  // Textur setzen
  begin
    gluQuadricOrientation(Sphere, GLU_OUTSIDE);
    gluQuadricNormals(Sphere, GLU_SMOOTH);
    gluQuadricTexture(Sphere, True);
    if TexID > 0 then
    begin
      glEnable(GL_TEXTURE_2D);
      glBindTexture(GL_TEXTURE_2D, TexID);
    end;
  end;
  // Kugel erstellen
  gluSphere(Sphere, Radius, TRIANGLES, TRIANGLES);
  gluDeleteQuadric(Sphere);
  if glIsEnabled(GL_TEXTURE_2D) then
    glDisable(GL_TEXTURE_2D);
  glPopMatrix;
end;

Die Texturierung klappt aber die Farbwerte lassen sich nicht zuweisen.
Das wäre noch die MouseDown, aber die hat damit nichts zu tun, ich zeichne gerade den normalen Renderdurchlauf auch ohne Texturen und stattdessen versuche ich ihn mit Farbe zu zeichnen, dann sieht man wenigstens sofort ob es klappt oder nicht.
Code:
Zeichne(True);
glReadPixels(Round(MouseXDown), SCREEN_HEIGHT-Round(MouseYDown), 1, 1, gl_Red, GL_UNSIGNED_BYTE, @Hit);


Gruß,
Nils

_________________
Meine Musik: spiker-music.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Keine Farbe mit glColor
BeitragVerfasst: Mi Aug 04, 2010 16:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also mir fällt dazu ein das möglicherweise Blending aktiv ist. Außerdem ist es eine gute Idee explizit irgendwo glBindTexture(0) zu setzen um die Texturen zu deaktivieren. Die Textur bleibt ja solange aktiv bis eben irgendeine andere gebunden wird.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Keine Farbe mit glColor
BeitragVerfasst: Mi Aug 04, 2010 17:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Wenn ich die Skysphere testweise mal mitzeichne ist der Hintergrund plötzlich rot und die Planeten schwarz. Da man bei der Skysphere den Tiefentest und das Licht deaktiviert, fand ich das recht interessant und habe nochmal explizit mit dem Licht rumexperimentiert. Es scheint so als wäre das Licht noch an gewesen, das war bei der Skysphere ja nicht der Fall, da ich es direkt vor dem Zeichnen der Skysphere deaktiviert habe. Habe nun einfach das Licht nochmal direkt vor dem Zeichnen aus gemacht und es läuft. Die Idee mit dem expliziten Deaktvieren der Textur hat mich irgendwie drauf gebracht, vielen Dank!

_________________
Meine Musik: spiker-music.net


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.006s | 14 Queries | GZIP : On ]