PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [OpenGL] Display Lists vs. Vertex Arrays



mrsuicide
20-10-2004, 09:59
Ich habe ein komisches Performance-Problem mit Vertex Arrays...

Ich habe mir eine Implementierung geschrieben, wobei Objekte mit Display Lists ( glCallList() ) oder Vertex Arrays (bzw. VBOs, wenn die unterstützt werden, glDrawArrays() ) gerendert werden. Beides wird vorkalkuliert.

Wenn 100 Objekte mit DLs rendere komme ich auf 57 fps.
Wenn ich dann die Kamera von den Objekten wegdrehe, bekomme ich 571 fps.

Bei 100 Objekten und VBOs sind es 43 fps.
Wenn ich die Kamera dann wegdrehe sind es 130 fps. :mad:

Mein Problem sind nicht die 14 fps beim rendern der Objekte, aber mein Problem sind die 441 fps, wenn ich die Kamera wegdrehe. Wie soll das denn dann im fertigen Spiel aussehen?

Es werden ja auch nicht immer alle Objekte gezeigt. Dann würde die Performance wohl durch die unsichtbaren Objekte entschieden, oder?

Wann sind nun eindeutig VBOs zu bevorzugen, und wann nicht?
Kann es daran liegen, dass mein Objekt ein einfaches Mesh ist? Würden die Performanceverhältnisse bei großen Objekten wie z.B. dem Level anders liegen?

Hilfe!
:confused: :confused: :confused:

Daywalker313
20-10-2004, 10:59
Ich weiß ja nicht wie dein Mesh aufgebaut war, aber in der Regel nimmt man Trianglestips weil sie am schnellsten sind. Quads würde ich nicht einsetzen.
Display Lists sind sehr schnell, gefolgt von CVAs.

Du solltest FrustumCulling und entweder BSP (BinarySpacePartitioning, eher altmodisch), ein Portalsystem (für Indoor-Games) oder QuadTree Culling (für weitere Level/Landschaften) einsetzen.

Auf dein Problem mit den 400/130 FPS komme ich nicht so ganz, dein Spiel ist ja entweder framelimitiert (wird nur bei Konsolen gemacht) oder zeitbasiert.
Es ist doch egal wieviele Bilder gerendert werden, wenn die Geschehnisse nicht aufgrund der vergangenen Frames, sondern der vergangenen Zeit passieren.

mrsuicide
20-10-2004, 14:22
Das Levelrendering ist kein Problem. :) Dort lohnt sich Frustum Culling, BSPs & Co.

Nur ich versteh immer noch nicht diesen fps-Unterschied beim Mesh-Rendering...

Ich benutze GL_TRIANGLES.