OpenGL - Was ist mit den Listen los?

thekiller

Viceinator
Tach schön,

ich habe gestern festgestellt, dass die FPS mit mehreren Display Listen recht schnell einbrechen.
In meinem Fall habe ich 48 Listenobjekte hinzugefügt welche alle ein und dieselbe Geometrie haben.
Jedes Objekt hat 10 Dreieckpolygone. Die FPS sind bei mir von ca. 2600 auf 2200 gesunken. Erscheint mir etwas viel bei nur 480 Polygonen.
Ist dass normal?

MfG Manuel

EDIT: Mit Texturen geht es locker auf 1600 - 1800 runter
 
Zuletzt bearbeitet:
Hallo Manuel,

welche Szenarien hast du bei den angegebenen FPS-Werten verglichen? Einmal Rendering ohne Displaylisten und einmal mit? Oder hast du die Geometrie einmal überhaupt nicht gerendert und einmal mit Displaylisten?

Wie dem auch sei, ein Unterschied von 2600/s zu 2200/s entspricht einer Zeitdifferenz von (1/2200 - 1/2600)s ? 0,07ms. Das ist nicht allzu viel. Allgemein empfiehlt es sich, sich bei solchen Messungen die absolute Zeit pro Frame zu vergleichen, da die FPS-Zahl etwas trügerisch sein kann.

Abgesehen davon nutzt du die Leistung der Grafikkarte umso besser aus, je mehr Polygone du pro Draw-Call durch die Pipeline schickst. 10 Polygone pro Call sind da schon sehr wenig.

Grüße,
Matthias
 
Zuletzt bearbeitet:
Ausserdem ein kleiner Tip am Rande:
Die FPS sind nicht ein wirklich zuverlässiger Massstab. Du kannst anhand krasser Abfälle (zum Beispiel auf 2-3 FPS oder so) feststellen, dass du irgendwo ein gröberes Problem hast, aber viel mehr würde ich daraus nicht entnehmen wollen. Um festzustellen ob mit deinem Code etwas nicht stimmt (und vor allem wo) ist es klüger einen Profiler zu verwenden. Für DirectX gibt es zum Beispiel PiX. Da kannst du für jedes Frame einzeln prüfen wo am meisten Arbeit verrichtet wurde oder wie komplex deine Shader wurden. Ich denke für OpenGL gibts ein analoges Programm.
 
Ich habe dieselbe Szene mit den 48 Objekten und ohne die Objekte verglichen. Es sind auch noch andere Listenobjekte in der Szene aber die haben alle wesentlich mehr Polygone. Bei denen ist es mir vorher nicht besonders aufgefallen. Wollte mir halt eine kleine "Map" zusammenbauen mit der ich bestimmte andere Funktionen entwickle und teste.
Also brauch ich mir soweit keine Sorgen um die Display Listen machen?
 
Für DirectX gibt es zum Beispiel PiX. Da kannst du für jedes Frame einzeln prüfen wo am meisten Arbeit verrichtet wurde oder wie komplex deine Shader wurden. Ich denke für OpenGL gibts ein analoges Programm.
Für OpenGL kann ich gDEBugger empfehlen. Das ist sogar noch mächtiger als PIX.

Also brauch ich mir soweit keine Sorgen um die Display Listen machen?
Nein, überhaupt nicht.

Grüße,
Matthias
 
Zurück