I have to render a large database of geometry with textures lighting, materials etc.
I need the highest performance possible (fps)
What I need to know is what will give me the highest performance possible…
i.e. how much do display list speed up rendering
how much do state changes (e.g. changing textures hurt rendering)
is there a faster way than display lists?
If your data pool is very large, display lists isn’t the way to go :
Displays lists are stored in special pre-compiled format, so Creating one huge display list will fill your memory. You probably won’t be able to make everything fit into memory, and there will be a lot of swapping.
The best way to go is common sense, is trying to figure out wich data is visible (using the techniques that suits your need) and using compiled vertex arrays. That way you reduce the geometry you have to calculate and using vertex arrays will cut down from the time it would take to compile a small display on that chunck of data and having the vertex compiled will help you do multipass if you need to.
As for changing states, well you need to sort your data by texture, materials and other effects to minimize state changes
According to my experience, display lists significantly improve speed.
But do NOT create just one list for all your geometry.
Create as many display lists as it does sense and USE STRIPS inside display lists.
GeForce hardware does a cool work - it clip-tests strips before send them to light-and-render path.
Then on every frame do the simple clip testing for every display list then send them to OpenGL.
State changes are very expensive, so sort your data before.
Display lists are best in quality/price terms.
But the fastest are specially prepared arrays.
Take a look to http://www.nvidia.com/Marketing/Developer/DevRel.nsf/FAQ_Frame?OpenPage