My C++ modelling app pushes a lot of polygons and performance is an issue. Currently, each object has it’s own small display list which is re-created when ever the object geometry changes (which isn’t much). To draw the scene, each object is then told to draw it’s own display list to the screen.
Would it be more efficient to draw all these objects to one big display list and draw it in one go, rather than maintain lots of small ones? This would mean having to recreate the main list every time a single object changes (eg. it’s geometry is edited), but this might be exceptible if it improves the speed at which the entire scene is rendered.
Any opinions? Does anyone else do this, or do they maintain hundreds of small lists? What kind of performance benefit, if any, can I expect if I change my app?
I would suggest to keep them in separate display lists for simplicity. Also, nothing can tell if you’ll have improvment (dl callings are very fast).
i would stipple similar event. improvement is difficults with small batch granuals.
Actually today if you use VBO’s then using no displaylists is better.
A related question:
If create display lists with objects a, b, c, d, and call each list List_a, List_b, List_c, List_d.
Then I create another display lists called MegaList that has 4 glCallList calls to lists List_a, List_b, List_c, List_d.
Will MegaList occupy the same memory as (List_a + List_b + List_c + List_d)?
In other words: is it recommended to use a display list that contains other display lists? Or should I delete display List_a, List_b, List_c, List_d after creating MegaList?
the only way to know for sure is to measure.