Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   OpenGL - unterschiedliche Farbdarstellung (https://www.delphipraxis.net/165570-opengl-unterschiedliche-farbdarstellung.html)

meme2822 6. Jan 2012 09:06

OpenGL - unterschiedliche Farbdarstellung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

Habe folgendes Problem:

Möchte mit OpenGL Messergebnisse darstellen.
Klappt so weit ganz gut, nur mal werden die Farben so angezeigt, wie sie sollen und mal wesentlich dunkler.
Die eigentlichen Farben sind immer gleich (fülle mit den Werten auch eine Bitmap, sieht immer gleich aus).

Den Hintergrund setze ich mit glclearcolor(1,1,1,0.0) und benutze die 'Standardbeleuchtung' von OpenGL (spiele also nicht mit Licht).

Woran kann es liegen?

Melanie

Aphton 6. Jan 2012 09:29

AW: OpenGL - unterschiedliche Farbdarstellung
 
Schalt mal die Beleuchtung aus!
Ansonsten liegts eben daran, dass du die Flächennormalen nicht richtig setzt - und dadurch kommts eben zur falschen Beleuchtung!

meme2822 6. Jan 2012 09:38

AW: OpenGL - unterschiedliche Farbdarstellung
 
Hallo,

Danke für die schnelle Anwort.

Aber ich schalte gar kein Licht an (oder muss ich es explizit ausschalten)?

Melanie

Uwe Raabe 6. Jan 2012 09:55

AW: OpenGL - unterschiedliche Farbdarstellung
 
Das Stichwort ist glDisable(GL_LIGHTING). Damit wird jede Berechnung von Beleuchtungseffekten ausgeschaltet. Alle Elemente werden dann mit ihrer zugewiesenen Farbe dargestellt.

meme2822 6. Jan 2012 10:05

AW: OpenGL - unterschiedliche Farbdarstellung
 
Danke,

hatte es gar nicht 'enabled'.
Nun habe ich es aber trotzdem 'disabled' (wie gezeigt), aber der gleiche Effekt bleibt:

Mal hell, mal dunkel. :?:

Melanie

Aphton 6. Jan 2012 10:06

AW: OpenGL - unterschiedliche Farbdarstellung
 
Achso...
Ja dann zeig mal die relevanten Codestellen bitte her!
Durchs Raten allein kann man ja nicht weit kommen

meme2822 6. Jan 2012 10:28

AW: OpenGL - unterschiedliche Farbdarstellung
 
Ist etwas verteilt, aber ich stückel mal die Teile etwas zusammen....

Delphi-Quellcode:
Procedure TdreiD.Render;
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45.0,ClientWidth/ClientHeight,iNearClipping,iFarClipping);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  glTranslatef(ITranslationX*SpaceNorm,ITranslationy*SpaceNorm*0.8,ITranslationZ*SpaceNorm);
  glTranslatef(0.5*SpaceNorm,0.5*SpaceNorm,0.5*SpaceNorm);
  glRotatef(IAngleX,1,0,0);
  glRotatef(IAngleY,0,1,0);
  glRotatef(IAngleZ,0,0,1);
  glTranslatef(-0.5*SpaceNorm,-0.5*SpaceNorm,-0.5*SpaceNorm);
  gldisable(GL_LIGHTING);
  if currentShowTyp <> nil then CurrentShowTyp.Plot;
  RenderAxis;
  SwapBuffers(DC);
end;
Zeichnen der Punkte bei 'Plot'..
Delphi-Quellcode:
 for i := 0 to NormedDataSet.Count - 1 do
    begin
      glBegin(GL_POINTS);
        P := NormedDataSet.Items[i];
        glcolor3f(ColoredSet[i,0]/255,ColoredSet[i,1]/255,ColoredSet[i,2]/255);
        glVertex3f(p^.X,P^.Y,p^.Z- SpaceNorm);
      glend;
    end;
Ansonsten noch viel verschieben und rotieren, um die Achsen zu zeichnen.
Wie gesagt, immer der gleiche Code, mal hell mal dunkel!

Melanie

Aphton 6. Jan 2012 10:32

AW: OpenGL - unterschiedliche Farbdarstellung
 
Also auf Anhieb sehe ich keine Fehler.
(Außer das man die Farbe vorher - vorm glBegin() glEnd() Block - setzen sollte; weiß aber nicht, ob das nun etwas zur Sache tut)

Zeig mal deine glEnables() her.

meme2822 6. Jan 2012 10:44

AW: OpenGL - unterschiedliche Farbdarstellung
 
Viele benutze ich nicht...

Delphi-Quellcode:
Procedure TdreiD.SetupGl;
begin
  glClearColor(1,1,1,0.0);
  glenable(GL_DEPTH_TEST);
  glDisable(GL_CULL_FACE);

Delphi-Quellcode:
 glenable(GL_Blend);
  glBLendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GL_Blend schalte ich allerdings wieder aus, bevor ich die Punkte zeichne..

Danke, Melanie

meme2822 6. Jan 2012 10:44

AW: OpenGL - unterschiedliche Farbdarstellung
 
Achso, Farbe vor das glBegin ziehen, bringt auch nichts, habe ich probiert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz