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

Aktuelle Zeit: Do Jul 10, 2025 17:49

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Blending-Problem mit VCL
BeitragVerfasst: Sa Dez 27, 2003 14:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Ich wollte mein Projekt mit Hilfe von Blending ein bischen aufbessern,
leider funktioniert da gar nichts.
Erst dachte ich das Unit glBMP mit der ich die Texturen lud daran schuld war,
dies erwies sich aber als falsch da es mit einen API-Template gut funktionierte.
Also liegt es scheinbar daran dass ich in der VCL irgend etwas noch nicht geladen oder eingestellt habe. Leider komme ich nicht darauf was das ist.
Ich habe das Problem nochmal erfolgreich mit einem neuen einfachen Projekt nachgestellt.
Vielleicht findet ihr ja herraus was fehlt.
Mfg
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 27, 2003 15:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 09:15
Beiträge: 70
Wohnort: Italien
Das Problem liegt darin, dass der Stein und das Gras komplet übereinanderliegen und OpenGL 2 Flächen nur ineinander blendet, wenn die eine hinter der anderen liegt. Hier kann die GraKa nicht unterscheiden, welche Fläche wohin geblendet werden soll.

Lösungen: entweder schaltest du den Tiefentest der GraKa aus (glDisable(GL_DEPTH_TEST); ),
oder du schiebst die eine Fläche etwas nach vor die andere (glTranslatef(0,0,0.001); ).

Dieses Problem wäre ideal lösbar mit Multitexturing (siehe Tutorial).

_________________
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 27, 2003 16:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Danke tyr,
in dem nachgestellen Projekt funktionieren deine LösungsVorschläge wunderbar.
Leider kann ich diesen Trick schlecht in meinem richtigen Projekt umsetzen.
Aber ich glaube das Multitexturing-Turial mir weiterhelfen kann.
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 27, 2003 17:24 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Wenn man ohne Multitexturing mehrere Texturen auf eine Fläche blenden will, dann kann man ab dem 2.Renderpass den Tiefentest auf gl_lequal stellen. Dadurch werden dann auch Punkte anzeptiert die genau auf den alten liegen. Außerdem kann man im zweiten Renderpass auch darauf verzichten den Tiefenwert zu schreiben und gldepthmask(false) verwenden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 27, 2003 18:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Was meinst du mit "2.Renderpass "?

Ich möchte übrigens 4 Texturen übereinander legen,
geht das dann auch noch?

Mfg
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 27, 2003 19:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Das geht mit einer beliebigen Anzahl von Texturen. Mit 2.Renderpass meinte ich das 2.Mal Zeichnen. Wenn man gldepthfunc(gl_lequal) setzt, kann man beliebig oft drüberzeichen. Man sollte aber auf ATI Karten nie gl_equal verwenden, wie das nicht mit dem hierachischen ZBuffer dieser Karten zusammen funktioniert.
In den allermeisten Fällen ist Multitexturing schneller.
Eine Ausnahme ist, wenn wenig Geometrie gezeichnet wird und es vorkommt, daß viele Pixel verdeckt werden. Dann erkennen neuere Karten anhand des ZBuffers, daß die 2.Texture bei den verdeckten Pixeln überhaupt nicht gezeichnet werden muß und lesen sie dementsprechend auch nicht aus. Das fällt vermutlich aber erst bei längeren Shadern ins Gewicht. Ob es bei 4 Texturen und in deiner speziellen Situation gilt, weiß ich nicht. Eventuell könnte man erst eine Texture zeichnen und im zweiten Pass, dann die restlichen drei über Multitexturing, aber so viel wird es vermutlich nicht bringen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 28, 2003 11:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
@LarsMiddendorf heißt das mein Spiel würde dann auf Rechnern mit ATI Karten nicht laufen?

Das mit dem Multitexturing funkioniert nicht ganz so wie ich wollte.
Ziel:
Ich möchte eine Landschaft zeichnen, welche Höhenunterschiede hat.
Ich wollte eigentlich mit hilfe von Blending vier Texturen jeweils von einer Ecke aus ineinander verlaufen lassen. Es sollten also 4 Texturen die nur an einer Ecke voll sichtbar sind übereinander gezeichnet werden, so dass eine nichtdurchsichtige Textur entsteht.
Ergebnis:
Alle meine anderen Texturen hatten die Falsche Textur, und die Landschaft hatte keine überläufe sondern nur Teilweise vermixte Texturen.

Mfg
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 28, 2003 12:37 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Nein, nur die Leistungs der Karte würde nicht voll ausgenutzt. Bei einer Landschaft mit vielen Dreiecken würde ich dann auch eher Multitexturing nehmen anstellen von Blending. Dann brauchst du die Landschaft nur einmal zeichnen.
Die Blendfaktoren kannst du dann in der Vertex Farbe speichern.
Schöner wäre, wenn man für jede der 4 Texturen den Faktor jeweils in r,g,b,a unterbringen könnte, nur dann würde normales Multitexturing nicht mehr ausreichen und man müßte Shader verwenden.
Hier ist ein Artikel wo das mit 3 Texturen gemacht wird:
http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm

In dieser Demo wird der Faktor für Texture0 in rgb, und der Faktor für Texture1 im Alpha Wert gespeichert. Der Faktor für Texture2 ist dann die Differenz der beiden Werte bis zu 1. Für 4 Texturen könnte man die zweite Farbe mitverwenden und dort auch nochmal einen Blendfaktor unterbringen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 29, 2003 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)

[Edit]
Ich habe es jetzt mit der Funktion "gldepthfunc(GL_LEQUAL)" geschaft,
in dem ich meine Flächen in anderer Reinfolge zeichnen lasse.
[/Edit]

Mfg
IFlo

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 5 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.020s | 16 Queries | GZIP : On ]