Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Opengl Problem:Texturfarbe beeinflusst Materialfarbe (https://www.delphipraxis.net/181290-opengl-problem-texturfarbe-beeinflusst-materialfarbe.html)

luisk 2. Aug 2014 17:53

Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
OpenGL:
Woran kann es liegen, dass die Texturfarbe die Farbe des folgenden Materials beeinflusst?
Hier wurde das Problem auch schon mal angesprochen
http://www.c-plusplus.de/forum/103156-full
leider fehlt dort die Erklärung bzw. eine Lösung des Problems.

Medium 2. Aug 2014 19:32

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Und du bist der Meinung, dass du uns ansatzweise genügend Infos an die Hand gegeben hast, um deine Frage zu beantworten?

Puke 2. Aug 2014 23:03

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Hatte das Problem auch einmal. Irgendwo stand es dann im Delphi-OpenGl-Wiki

Gruß
Puke

luisk 3. Aug 2014 10:38

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von Puke (Beitrag 1267382)
Hatte das Problem auch einmal. Irgendwo stand es dann im Delphi-OpenGl-Wiki

Gruß
Puke

Danke Puke für den Hinweis.
Weißt Du evtl. noch, wo das Problem näher beschrieben wird ?

EWeiss 3. Aug 2014 15:58

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von luisk (Beitrag 1267390)
Zitat:

Zitat von Puke (Beitrag 1267382)
Hatte das Problem auch einmal. Irgendwo stand es dann im Delphi-OpenGl-Wiki

Gruß
Puke

Danke Puke für den Hinweis.
Weißt Du evtl. noch, wo das Problem näher beschrieben wird ?

Keine :glaskugel:

Wie sollen wir das wissen? Ohne in den Quelltext zu schauen?
Keine Ahnung welche Initialisierungen du vorgenommen hast bevor das Material eingebunden wurde.

GL_LIGHTING
GL_BLEND

usw.. kann Einfluss auf die Farbe des Materials haben.
Bevor du das Material bindest über Texturen oder was auch immer versuche mal vorher diese Funktionen zu deaktivieren.
Delphi-Quellcode:
glDepthMask(ByteBool(GL_FALSE));
glDisable(GL_LIGHTING);
glDisable(GL_BLEND); // Achtung! Kann einen negativen Effekt haben da einige Materialien durchsichtig sein müssen ist halt von Fall zu Fall unterschiedlich.
glBindTexture(GL_TEXTURE_2D, meinetexture);
Nachdem gerendert wurde kannst du sie ja wieder einschalten wenn nötig.
Aber wie gesagt ohne Quelltext sind das "NUR" Vermutungen.
Deshalb auch nur als Beispiel anzusehen.

Auf jeden fall must du den Tiefenbuffer und den Farbbuffer an erster stelle im RenderEvent vorher löschen bevor was neues gerendert wird.
Delphi-Quellcode:
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);


gruss

Puke 4. Aug 2014 11:07

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Ich hab grad kein Windows zur Hand, weswegen ich meine Vermutung nicht testen konnte. Aber in einer meiner Quelltexte habe ich genau das hier gemacht:
Delphi-Quellcode:
// Enable Textures (look wiki.delphigl.com)
if not IN_SelectMode then
begin
  glEnable(GL_TEXTURE_2D);
  glColor3f(1, 1, 1);
end;
Ich vermute mal (ich mach ja nichts ohne Grund:?), dass ich hier dem Problem aus dem Weg gehen wollte. Also müsste ein einfaches Weiß die normalen Texturen sichtbar machen.

Ich hoffe, dass dies die Lösung ist
Puke

luisk 4. Aug 2014 13:08

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
So sieht meine Ausgabe aus und dennoch ändert meine gelbe Hintergrundfarbe der Textur
mit Alph-Werten die Materialfarbe aller folgenden Objekte. alle haben eine Gelbstich.
Was hat die Texturfarbe mit der Materialfarbe zu tun ?
über gldisable(GL_TEXTURE_2D) muss die Textur wieder deaktiviert werden !
:idea:

glDisable( GL_Blend )
gldisable(GL_ALPHA_TEST);
glDisable(GL_LIGHTING) ;
glEnable(gl_Color_Material);
glcolor3f(1,1,1);

glEnable(GL_TEXTURE_2D);
glListBase(listbase);
glCallLists (length(in_text), GL_UNSIGNED_BYTE, @in_text[1]);// Aufruf der Listen mit Buchstabentexturen
gldisable(GL_TEXTURE_2D);// jetzt geht's :idea:

glDisable(gl_Color_Material);
glEnable(GL_LIGHTING) ;
glMaterialfv(GL_FRONT_and_BACK, GL_Diffuse,p_Diffuse_0);
glMaterialfv(GL_FRONT_and_BACK, GL_Ambient,p_Ambient_0);
glMaterialfv(GL_FRONT_and_BACK, GL_Emission,p_Emission_0);
glMaterialfv(GL_FRONT_and_BACK, GL_SPECULAR,p_specular_0);
glMateriali(GL_FRONT_and_BACK,GL_SHININESS,g_Color _fv.b_Shine);

luisk 4. Aug 2014 18:08

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
glenable( GL_Blend );
ist am Ende noch für die transparenten Elemente erforderlich.

EWeiss 4. Aug 2014 18:17

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Was man einschaltet muss man auch wieder ausschalten.
Mehr gibt's da nicht zu sagen.


gruss

EWeiss 4. Aug 2014 18:42

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von luisk (Beitrag 1267477)
glenable( GL_Blend );
ist am Ende noch für die transparenten Elemente erforderlich.

:lol:

Delphi-Quellcode:
glDisable(GL_BLEND); // Achtung! Kann einen negativen Effekt haben da einige Materialien durchsichtig sein müssen ist halt von Fall zu Fall unterschiedlich.


gruss

luisk 4. Aug 2014 20:32

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Die transparenten Teile muss man eh zum Schluss separat zeichnen.
Mit dem Ausschalten ist schon klar, allerdings hätte ich nicht gedacht,
dass die Texturfarbe die Materialfarbe beeinflusst, dachte, die können parallel betrieben werden.
Naja, so ist es halt :idea:

EWeiss 4. Aug 2014 20:37

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Die transparenten Teile muss man eh zum Schluss separat zeichnen.
Nö..

Kann man zeichnen wann und wo man will.
Wichtig ist nur das man vorher eingeschaltete Funktionen wieder ausschaltet
die Einfluss auf das nächste zu Rendernde Objekt haben könnten.
Licht, Farbe, Blendeffekte usw...


gruss

Puke 4. Aug 2014 21:03

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von Puke (Beitrag 1267449)
Delphi-Quellcode:
// Enable Textures (look wiki.delphigl.com)
if not IN_SelectMode then
begin
  glEnable(GL_TEXTURE_2D);
  glColor3f(1, 1, 1);
end;

Dann war es doch der andere Teil der if-Abfrage ...
Sorry!

Gruß
Puke

luisk 5. Aug 2014 08:10

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von EWeiss (Beitrag 1267485)
Zitat:

Die transparenten Teile muss man eh zum Schluss separat zeichnen.
Nö..
Kann man zeichnen wann und wo man will.
Wichtig ist nur das man vorher eingeschaltete Funktionen wieder ausschaltet
die Einfluss auf das nächste zu Rendernde Objekt haben könnten.
Licht, Farbe, Blendeffekte usw...
gruss

transparente zum Schluss. Hier ist es beschrieben:
http://www.michaelkeutel.de/computer...s/transparenz/
"... In der Rendering Loop werden dann zuerst die opaquen Objekte und erst im Anschluss die transparenten Objekte gezeichnet. Auf diese Weise findet eine korrekte Überblendung der opaquen Objekte unter Anwendung der Mischfunktion statt.
Fazit
Dieser Ansatz ist performant durchführbar und erzielt in den meisten Situationen korrekte Ergebnisse. Knifflig wird es sobald sich transparente Flächen gegenseitig verdecken. Dann ist eine Sortierung der transparenten Objekte untereinander nach ihrem Tiefenwert, also in Z-Richtung, notwendig. Dieses Problem performant zu lösen ist ein aktuelles Forschungsthema. Ein algorithmischer Ansatz hierfür ohne Sortierung ist Depth Peeling."

EWeiss 5. Aug 2014 10:19

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

transparente zum Schluss. Hier ist es beschrieben:
Tja.. Wenn du der Quelle vertraust!

Ich muss es nicht ;)
Bzw. Zeichne meine Objekte wie ich will.

Aber bitte kein Problem für mich.

gruss

Unx 5. Aug 2014 11:22

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von EWeiss (Beitrag 1267511)
Bzw. Zeichne meine Objekte wie ich will.

Aber bitte kein Problem für mich.

Wenn man keine Probleme damit hat, dass die transparenten Objekte falsch dargestellt werden na dann...

luisk 5. Aug 2014 16:29

AW: Opengl Problem:Texturfarbe beeinflusst Materialfarbe
 
Zitat:

Zitat von EWeiss (Beitrag 1267511)
Zitat:

transparente zum Schluss. Hier ist es beschrieben:
Tja.. Wenn du der Quelle vertraust!

Ich muss es nicht ;)
Bzw. Zeichne meine Objekte wie ich will.

Aber bitte kein Problem für mich.

gruss

Und wie machst Du das ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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