Archived

This topic is now archived and is closed to further replies.

Is Vertex Buffer extension "much more" faster than Display Lists?

This topic is 5503 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Well, I started learning OpenGL again after a few months of being stand by, and until now I''m using only display lists. I''m following the nehe tutorials, and they seem to use this method only. I was wondering if it is worth to expend the next weeks learning extensions and (if it is supported by my video card) vertex buffers in particular. I''m currently working on a TNT2 (!!), and the performance I get is quite poor. (my fault, many OGL games run quite well) For example, if I create a Display List for drawing a cube and I call this Display List 100 times from a FOR loop (without textures, without lights), my FPS drops down like 70%. I guess this is not the best performnce test one can do. But, for the moment, I couldn''t come up with something better. I''m using SDL to initialize the video mode etc. Wich method you use to draw your stuff in OpenGL? I''m pretty clueless about OpenGL and I think it would be cool if some of you could discuss something about the subject. Thanks in advance.

Share on other sites
I doubt you have the VBO extension on a TNT2, since it doesn''t perform geometry calculations on the card. If you do have it, it''s emulated anyway, so you won''t see any benefit over standard vertex arrays.

You might want to try vertex arrays though. I almost always find indexed VAs are faster than display lists. You could even combine the two, although you won''t get much benefit.

The method I use is a general purpose Vertex Array class which uses VBO if available or falls back to vertex arrays otherwise. Since VBO uses the existing vertex arrays commands, this is relatively easy to do.

Share on other sites
Here's an interesting thread from OpenGL.org:

http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/010685.html

It's not totally about VBO, so I'll quote/lightly-paraphrase the relevant text:

quote:
Originally posted by cass:
[VBO is] a better interface for software T&L than compiled vertex arrays, and pretty much all the other attempts to solve the "vertex buffer" problem before.

So while VBO isn't necessarily "hardware accelerated" on all platforms, it should still provide opportunity for "better acceleration" over other APIs for vertex array management.

Thanks -
Cass

The guy works at NVidia, so I think it's safe to assume he knows what he's talking about. Anyways, my point is that there does appear to be some benefits in using VBO, even when it is just emulated in software.

[edited by - Ostsol on November 11, 2003 6:56:57 PM]

Share on other sites
Interesting. Although, I''d be really surprised if there''s a significant difference in performance compared to VAs.

Share on other sites
from my expierence i can tell you, VAs are faster! and another advantage is that if you have created a vertex manager, and if you use indexed VAs, you can save a large amount of memory! (two points who are the same are only included once)

Share on other sites
AP : "if you use indexed VAs, you can save a large amount of memory! (two points who are the same are only included once)" .... and what would in VBO case be different?

You should never let your fears become the boundaries of your dreams.

Share on other sites
Ok, I tried va''s and, at least, they look easier to code.

Can I store the verices of all my objects into one va and lock only that one array once per frame?

Share on other sites
quote:
Original post by Anonymous Poster
from my expierence i can tell you, VAs are faster! and another advantage is that if you have created a vertex manager, and if you use indexed VAs, you can save a large amount of memory! (two points who are the same are only included once)

VAs are never going to be faster than VBO on a T&L card unless you're doing something very wrong, or possibly you're updating the geometry every frame (ie for skinning).

Here's my experience, from a report on skinning and mesh rendering performance that I wrote recently. The bottom 3 rows are without animation or skinning, so they're the most applicable to general mesh rendering. BTW, the skinning method I'm using here isn't exactly optimal yet, so the figures for that are somewhat distorted. All these tests were done with a Radeon 9700 pro.

Anim-   Smooth Skinning	Render  FPS     Tris/sec        Time /ation	motion          Method			        Frame (MS)Yes	Yes	Yes	IM	27.77	1,329,405	36.01Yes	Yes	Yes	VA	46.8	2,240,410	21.37Yes	Yes	Yes	VBO	47.11	2,255,250	21.23Yes	No	Yes	IM	28.91	1,383,980	34.59Yes	No	Yes	VA	48.4	2,317,005	20.66Yes	No	Yes	VBO	49.49	2,369,185	20.21Yes	Yes	No	IM	53.39	2,555,886	18.73Yes	Yes	No	VA	119.23	5,707,779	8.39Yes	Yes	No	VBO	170.99	8,185,633	5.85No	No	No	IM	63.08	3,019,766	15.85No	No	No	VA	171.12	8,191,857	5.84No	No	No	VBO	300.01	14,362,079	3.33

Abbreviations: IM: Immediate mode; VA: Vertex Arrays; VBO: ARB_vertex_buffer_object

[edited by - benjamin bunny on November 13, 2003 7:31:08 PM]

[edited by - benjamin bunny on November 13, 2003 7:32:13 PM]

Share on other sites
be intresting to see the kinda fps you get when using VBOs and the matrix palette stuff (the proper name escapes me atm) as you could render each bone segment with a different call and matrix to allow for animation, kinda the best of both worlds in a way, animation with the vertex data locked on teh card
(this is assuming i''ve understood the extension right, hehe)

Share on other sites
For some reason VBO''s work a lot slower on my machine than vertex arrays :/ must be something I''m doing wrong.

James Simmons
MindEngine Development
http://medev.sourceforge.net

1. 1
2. 2
3. 3
Rutin
24
4. 4
5. 5
khawk
14

• 11
• 11
• 23
• 10
• 9
• Forum Statistics

• Total Topics
633651
• Total Posts
3013128
×