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

Aktuelle Zeit: So Apr 28, 2024 19:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Display Listen?
BeitragVerfasst: Mo Apr 23, 2012 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 30, 2011 21:41
Beiträge: 136
Wohnort: Bad Vilbel
Programmiersprache: Delphi 7
Hallo allerseits,
Ich hab mal eine Frage zum Thema Display-Lists. Ich hab die Wiki durchforstet und nach dem Thema Display-Lists informiert. Dabei wird häufiger erwähnt das Display-Listen in einigen Fällen nichts bringen, zum Beispiel bei VBO (Vertexbufferobject) oder wenn man einfach nur ein Quad rendern will.
Nehmen wir an ich habe ein Haus aus ~ 30 Quads, über die eine Texture verteilt wird, erstellt.

Nun 2 Fragen:
1. Würde sich in diesem Fall überhaupt eine Display-List lohnen, bzw. wann lohnt sie sich den überhaupt, gibts da nen faustregel oder sowas dazu?
2. Was ist ein VBO? Ich hab zwar das Tutorial dazu gelesen und rausgefunden, wie man sie erstellt, aber mir ist nicht klar geworden wozu die eigentlich gut sind.

Danke im voraus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Mo Apr 23, 2012 21:44 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
30 Quads kannst du auch im Immediate-Mode rendern, das ist für heutige PCs lächerlich wenig. Ein Haus würde man in Computerspielen auch aus deutlich mehr als 30 Quads zusammensetzen.

Zu 1.) DisplayListen / VBOs lohnen sich eigentlich immer, wenn du entweder komplexe (mind. mehrere hundert Quads) oder besonders viele Objekte rendern möchtest.

2.) Ein VBO ist ein Speicherbereich, den du auf der Grafikkarte reservierst. Die Grafikkarte kann besonders schnell auf ihn zugreifen (viel schneller als auf den PC-Hauptspeicher). Deshalb ist es sinnvoll, komplexe Modelle als VBO im Grafikspeicher abzulegen. Wenn du eine DisplayList anlegst macht der Grafiktreiber wahrscheinlich auch ein oder mehrere VBOs daraus. Wenn du ein VBO manuell anlegst, hast du im Vergleich zur DisplayList den Vorteil, dass du selber bestimmen kannst, auf welche Art die Daten im VBO abgelegt werden. Durch clevere Wahl des Vertexformats und einige Tricks kannst du so weniger Speicherverbrauch oder mehr Geschwindigkeit erzielen, als es der Treiber kann.

Da ein VBO eine DisplayList ersetzt (jedenfalls wenn die DisplayList nur aus glBegin, glEnd, glVertex und glTexCoord besteht), macht es keinen Sinn, ein VBO in eine DisplayList zu kompilieren. Übrigens wird im Allgemeinen dazu geraten, nicht Quads sondern Dreiecke zu verwenden, da die Grafikkarten eigentlich nur Dreiecke verarbeiten können und bei allen anderen Formen erst eine Triangulation durchgeführt werden muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Mo Apr 23, 2012 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
Display-Listen würd ich grundsätzlich empfehlen um ganze Spielwelten zu rendern!
In meinen Games wird die Landschaft immer in Display-Lists gespeichert, statische Objekte sind perfekt für soetwas, einmal gerendert, ewig aufgerufen.
Aber auch die Gegner in meinem Spiel haben Display-Lists. Kaum ist ein Gegner gestorben wird seine Leiche in eine DisplayList geschrieben und ab dann nur mehr die gerendert. (Ein Gegner, ca 800 faces (Dreiecke)). Je mehr Gegner man tötet desto flüssiger läuft das Spiel

:mrgreen:

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Di Apr 24, 2012 16:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich möchte kurz darauf Hinweisen, dass sowohl Immediate Mode als auch Displaylisten in OpenGL3+ nicht mehr verwendet werden sollten bzw. können, da sie als veraltet gelten.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Di Apr 24, 2012 17:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
Und was ist dann die Alternative? Nur VBOs?

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Di Apr 24, 2012 17:43 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
VBOs (u.U. in Kombination mit IBOs) als Ersatz für DisplayListen und Vertexarrays anstatt Immediate Mode, würde ich sagen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Di Apr 24, 2012 21:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Nov 30, 2011 21:41
Beiträge: 136
Wohnort: Bad Vilbel
Programmiersprache: Delphi 7
Vielen Dank für die vielen Antworten.
Ich werd mich mal in VBO's und Display-Listen noch weiter in der Wiki reinlesen. Ich glaube zwar das bei den Dimensionen in denen ich arbeite noch keine Performance-Probleme auftauchen, aber ist glaube ich trotzdem nicht schlecht sich um da Thema Performance jetzt schonmal zu kümmern, vorallem weil das IMO am meisten Spaß macht.

EDIT: Noch kurz eine weitere Frage:
Wenn ich das in der Tutorials richtig verstanden habe, dauert das Binden von Texturen relativ gesehen lange, also macht es Sinn Objekte in einer Liste nach ihrer Textur zu gruppieren, oder bringt das nichts wenn die Objekte sowieso schon als Display-List oder VBO gerendert werden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Display Listen?
BeitragVerfasst: Mi Apr 25, 2012 05:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das ist der nächste Flaschenhals, sobald die Geometriedaten auf der Grafikkarte liegen. Letztendlich bevorzuge ich persönlich eine Gruppierung auf mit zwei Ebenen:
* Nach Material (also Shader, Textur, …)
* Nach Transformation
Danach werden Dinge gerendert, die außerhalb der Reihenfolge stehen (z.B. Transparenzen, die ja in Z-Richtung sortiert sein müssen etc.)

Dabei hat das Material die höhere Priorität, weil da mehr Zeug geändert werden muss. Das Ziel ist es, die Bind-Aufrufe zu minimieren.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.018s | 17 Queries | GZIP : On ]