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

Aktuelle Zeit: Sa Apr 20, 2024 08:46

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Performance Problem
BeitragVerfasst: Di Jan 11, 2011 10:10 
Offline
DGL Member

Registriert: Sa Dez 18, 2010 17:15
Beiträge: 3
Hallo DGL Community!
Ein Kumpel und ich arbeiten atm an einem Pacman in 3D.
Allerdings lässt die Performance ein wenig zu wünschen übrig. Besonders wenn viele Wände der Map in Blickrichtung liegen. Im Anhang ist das Programm sowie eine Beispielmap, welche das Problem veranschaulicht.
Wir hatten uns daher überlegt evtl. Frustum Culling für die Optimierung zu nutzen und haben zur Implementierung das
ensprechende Tutorial genutzt (http://wiki.delphigl.com/index.php/Tuto ... um_Culling). Die Einbindung funktioniert soweit auch. Allerdings scheint das ganze überhaupt keinen Effekt zu haben.
Die FPS drops bleiben weiterhin bestehen. Wo liegt da der Fehler? Oder liegt der Fehler vielleicht schon ganz woanders?

Wenn uns wer weiterhelfen könnte, wäre das super!

PS: Das Programm befindet sich noch in einer sehr frühen Phase von daher ist einges noch etwas unsauber und die Bedienung noch nicht gerade kompfortabel.

Grüße x23b5


Projekt: http://obihoernchen.androidcodex.com/stuff/pacman3D.rar


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Di Jan 11, 2011 10:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Willkommen bei DGL!
Ok, ich hab mir den Code mal kurz angeschaut.

  1. Ich glaube der Sinn von Frustum-Culling wurde nicht ganz verstanden. Ich habe das Tutorial nicht gelesen, möglich das das wichtige da nicht drin steht. Jedenfalls wird scheinbar für jedes Feld (=4 Quads) einzeln ein Sichtbarkeitstest ausgeführt? Das ist nicht sinnvoll, da die Grafikkarte selbst sowieso einen Sichtbarkeitstest für jedes Dreieck ausführt! Ein Sichtbarkeitstest auf der CPU macht nur Sinn wenn man dabei ein mit einem Test hunderte/tausende Polygone vom rendern ausschließt. Hier bieten sich Baumstrukturen an.
  2. ABER die Map ist nur 50x50 groß wenn ich das richtig sehe. Entsprechend habt ihr 2500 Felder und damit gerade mal ~10000 Quads für die Map. Wenn man es richtig anstellt kann die Grafikkarte sowas im Schlaf. Frustum-Culling nicht wirklich notwendig! (Ist aber ggf. sinnvoll für Blöcke von 15x15 oder mehr Feldern)
  3. HIER liegt der Hase begraben: Jedes Quad wird einzeln gerendert! Zwischen glBegin(GL_QUADS) und glEnd; kann man beliebig viele Quads packen. Ein glBegin ist ziemlich langsam da dort einiges initialisiert wird. Packe das gesamte Rendering der Map in ein einziges glBegin/glEnd-Paar...also quasi die Schleife da rein ziehen. Ihr werdet merken das ist massiv schneller.
  4. Nichts desto trotz ist glBegin/glEnd, auch Immediate Mode genannt, verdammt langsam. In jedem Frame werden die Daten erneut auf die Grafikkarte hochgeladen. Schaut euch VBOs und Displaylisten an. Dieses sind noch einmal wesentlich schneller und ihr könnt recht problemlos hunderttausende Dreiecke rendern. Da sich z.B. die Map nicht ändert könnte man diese einfach mittels einer einzigen Displayliste rendern.
  5. Dieser Artikel ist sicher einen Blick wert: http://wiki.delphigl.com/index.php/Performance

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Di Jan 11, 2011 15:12 
Offline
DGL Member

Registriert: Mi Jan 05, 2011 14:55
Beiträge: 47
Programmiersprache: Delphi, C++,C
Ach ja man kann auch im Forum schauen, das selbe hab ich auch vor nichmal einer Woche gefragt :D Hatte das gleiche Problem. Mit VOB's is mein Porgramm jetzt wesendlich resursenschonender und auch die Framerate hat sich verzehnfacht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Di Jan 11, 2011 15:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich möchte nicht klugsch***en, aber um möglicher Verwirrung vorzubeugen: Die Dinger heißen VertexBufferObjects (VBO), nicht VOB. ;) :)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Di Jan 11, 2011 15:27 
Offline
DGL Member

Registriert: Mi Jan 05, 2011 14:55
Beiträge: 47
Programmiersprache: Delphi, C++,C
Is mir auch gerade aufgefallen wollte es gerade ändern. Dummer Buchstabendreher


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Mi Jan 12, 2011 09:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
@nukular: Es heißt auch wesentlich und ressourcenschonender, aber das nur nebenbei^^

Öhm.. mir ist mal aufgefallen, dass hier im Forum mittlerweile jede dritte Frage darauf hinausläuft, dass man VBOs und Displaylisten empfiehlt, weil die Performance schlecht ist. Kann man das nicht einfach zusammenfassen und als Thread oben festpinnen? Ich meine, damit könnte man wohl schon von vornherein viele Probleme lösen. Als Titel würde ich vorschlagen "Performance FAQ zu OpenGL", dann könnte man da die typischen Probleme zusammenfassen, so wie sie auch im Wiki Eintrag drin sind, oder man linkt dort einfach hin. Ich finds mittlerweile nähmlich schon erdrückend, wenn man im Forum jeden Tag nen neuen "warum sind meine fps so niedrig"-Thread (Gott sei dank heißt es bei uns ja noch nicht "warum s1n m31n3 fsp soo00OO low o_O HLP RLY PLZ!!!111 kthxbye") findet. Immerhin sind die Lösungen fast immer die selben (VBO, Displaylisten, spatial partition & frustum culling).
Es ist selten mal jemand dabei, der Optimierung in der Ausführungsgeschwindigkeit seines Shaders braucht. Selbst wenn das sein Problem sein sollte und er es noch nicht weiß, kann er doch trotzdem vorher solche grundlegenden Dinge gegenchecken. Das wäre auch förderlich für die Annahme von Opengl3.0+, da man so dem immediate Mode endlich an den Kragen geht.
Klingt natürlich etwas harsch, als wenn ich nicht helfen wollte (ist ja nicht so), aber ständig das gleich zu wiederholen macht auf Dauer keinen Spaß und son geflame wie "nutz die Forensuche" will ich auch nicht loslassen müssen. Also ich mach dem User hier keine Vorwürfe, fragen ist ja erlaubt. Geht mir nur darum, dass immerwieder kehrende Probleme gepinnt werden könnten.

gruß, Sellmann.

PS: Falls das hier nicht hinpasst, kann das auch gerne ins Offtopic geschoben werden

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Mi Jan 12, 2011 12:04 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Aus diesem Grund wollen wir derartige Sachen zentral im Wiki zusammenfassen.
Festpinnen hilft eh nix. Wer die Suche nicht benutzt schaut auch keine gepinnten Threads an.
Außer man nennt den "Adminbereich - Geheim - Zugriff nur für Berechtigte" Dann schaut da vielleicht jamnd mal rein.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Mi Jan 12, 2011 12:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Öhm.. mir ist mal aufgefallen, dass hier im Forum mittlerweile jede dritte Frage darauf hinausläuft, dass man VBOs und Displaylisten empfiehlt, weil die Performance schlecht ist.

Das liegt meiner Meinung nach daran das nahezu sämtliche OpenGL Tutorials für Anfänger mit dem Immediate Mode anfangen.
Dazu gab's mal nen Thread: viewtopic.php?f=4&t=9484

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Mi Jan 12, 2011 17:14 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich hätte nichts dagegen, wenn wir die Einsteigertutorials modernisieren.
Wichtig wäre mir halt nur, dass der Einstieg nicht einen zu großen Sprung voraussetzt.
Die alten Tutorials bringen einen Schritt für Schritt weiter, ohne das die Kurve zu steil ansteigt. Das hatte mir damals, da ich mit exakt 0 Vorwissen hier ankam, sehr geholfen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Mi Jan 12, 2011 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
In einem Forum habe ich gesehen, dass wenn man den Titel eines Beitrags eintippt ein Link erscheint welcher sagt, dass Fragen mit ähnlichem Titel gefunden wurden. Ich denke ein solches System bewegt den ein oder anderen dazu, sich vorher nochmal die verlinkten Suchergebnisse anzusehen. Das würde mehrfach Fragen verhindern.

EDIT: Mir ist das Fourm wieder eingefallen http://www.delphi-forum.de/, dort wird das System benutzt.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Fr Jan 14, 2011 10:02 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Das wäre natürlich auch ideal mit den Vorschlägen beim Threaderstellen. Müsste man aber schauen, wer dann wirklich die Funktion nutzt und ersteinmal die anderen Threads durchliest. Da gäbe es also das gleiche Problem wie bei dem Festgepinnten Thread.
Anders gefragt, wäre es ein solcher Aufwand einen solchen Thread festzupinnen? Auch wenn es nur wenig Erfolg haben sollte, so wird es doch sicherlich trotzdem dem einen oder anderen helfen, oder? Wenn es tatsächlich nicht hilft, kann man ihn ja wieder entfernen.

Die Einsteigertutorials überarbeiten würde ich eher von abraten, die dürfen ruhig so bleiben (auch wenn ich es immer noch blöd finde, dass jetzt alles auf SDL umgemünzt ist). Vielleicht sollte man VBO und FBO eher als Einsteigertutorial umkonzipieren. So schwer ist es an sich nicht. Außerdem sollte jemand der in Grafik einsteigen will nicht vorgegaukelt bekommen, dass es einfach wäre. Das sieht man ja schon an dem Nachsitzen-Tutorial. => Aber das ist jetzt wieder ne ganz andere Diskussion.

Also im Endeffekt bin ich dafür einen festgepinnten Thread zumindest einmal auszuprobieren.

gruß, Sellmann.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Performance Problem
BeitragVerfasst: Fr Jan 14, 2011 17:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich finde die Idee mit einem gepinnten Thread nicht schlecht und habe das gleich mal umgesetzt. Ich hoffe, dass damit diese guten Wiki-Artikel mal etwas mehr propagiert werden, dort steht ja schon einiges drin.

greetings

_________________
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: Performance Problem
BeitragVerfasst: Sa Jan 29, 2011 23:58 
Offline
DGL Member

Registriert: Sa Dez 18, 2010 17:15
Beiträge: 3
Hi Leute!
Wir danken euch für eure Antworten! Die Performance ist merklich besser geworden. Auch der oben gepostete Thread ist eine schöne Sache.
Also nochmal danle.
LG


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 9 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.050s | 17 Queries | GZIP : On ]