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 |
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! |
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 |
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.
|
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 |
AW: OpenGL - unterschiedliche Farbdarstellung
Achso...
Ja dann zeig mal die relevanten Codestellen bitte her! Durchs Raten allein kann man ja nicht weit kommen |
AW: OpenGL - unterschiedliche Farbdarstellung
Ist etwas verteilt, aber ich stückel mal die Teile etwas zusammen....
Delphi-Quellcode:
Zeichnen der Punkte bei 'Plot'..
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;
Delphi-Quellcode:
Ansonsten noch viel verschieben und rotieren, um die Achsen zu zeichnen.
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; Wie gesagt, immer der gleiche Code, mal hell mal dunkel! Melanie |
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. |
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:
GL_Blend schalte ich allerdings wieder aus, bevor ich die Punkte zeichne..
glenable(GL_Blend);
glBLendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Danke, Melanie |
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. |
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