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

Aktuelle Zeit: Mi Jul 09, 2025 08:30

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Flimmern bei überlappenden Objekten
BeitragVerfasst: Di Apr 13, 2004 10:38 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Hey,

Ich bin grad dabei, mir Lightmaps anzuschauen, und das damit verbundene Blending allgemein. Dabei treten bei mir jedoch ein paar Probleme auf:
Wenn ich bspw. ein Rechteck auf ein anderes zeichne, wie ich es ja im Blending-Tut tun soll, so flimmert das (siehe Anhang #1). Wenn ich allerdings genau senkrecht darauf schaue (Anhang #2) oder das nur eine Einheit höher zeichne als das erste Rechteck, dann funktioniert das einwandfrei.

Meine Texturenfilter:
Code:
  1. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  2.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);


Code:
  1.  
  2. gluPerspective(45, ClientWidth/ClientHeight, 1, 1000);
  3.  


Danke :)


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 10:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dafür gibts zwei Lösungen :

1. (Beste Lösung) : Lightmapping über Multitexturing. Wird sowieso immer so gemacht, TMU0 = Basistextur, TMU1=Lightmap und dann multiplizieren. Dadurch musst du nur ein Quad zeichnen, und 2 TMUs hat sowieso jede Karte.

2. (Schlechter) : Benutze glPolygonOffset um das überlagerte Quad mit einem Offset vom Basisquad abzusetzen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 11:15 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
... daran hab ich noch gar nicht gedacht, das werd ich dann mal ausprobieren...
Also ist das Flimmern normal?!

//edit
Zitat:
Einige sehr moderne Grafikkarten haben bereits 4 Texturen-Units

Hmm ab wann denn etwa?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 11:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
@ Flimmern :
Ja, das Flimmern kommt daher das deine beiden Objekte wohl genau an der gleichen Position liegen, und damit auch den gleichen Z-Wert haben. In diesem Fall ist das Endprodukt dann eher ein aus Rundungsfehlern entstandener Zufall.

@ TMU :
Schau mal hier., Da gibts Infos zu den Pipelines so ziemlich aller Grafikchips. 4 TMUs gibts seit der Radeon 8500 / GeForce4 (nicht MX).

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 13:24 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Gut, danke, das funktioniert einwandfrei mit dem Multitexturing. :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 14:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
@SOS: Mir fällt gerade auf, dass PolygonOffset da gar nicht gehen würde. Man kann damit ja nur unterschiedliche Typen (Points, Linien und Polygone) höcher stellen. Und das dummerweise auch nur global.

Sinnvoller wäre es (auch für den Fall, dass keine TMU's mehr da sind) den DepthTest so einzustellen, dass nicht nur Flächen mit einem geringeren Z-Wert gerendet werden sondern auch die die den gleich Wert haben.
Code:
  1. glDephtTest(GL_LEQUAL);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 14:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich glaube du verwechselst da was. Er hat das oben mit zwei Quads gemacht, also macht man das wenn mans so lassen würde so :
Code:
  1.  
  2. Basisquad rendern
  3. glEnable(GL_POLYGON_OFFSET);
  4. glPolygonOffset();
  5. Lichtquad rendern
  6. glDisable(GL_POLYGON_OFFSET);


Da ers jetzt aber per MT macht, hat sich das Problem schon erledigt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

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