Rendering Points - which method

I have a very large set of points (~6-7 million) I wish to render. At the moment I am not concerned about acceleration structures. I am simply interested in hearing others experience with rendering large amounts of points. As I have not yet implemented the point rendering I am curious which method is generally the fastest.

I am guessing that vbo or vertex arrays are a good bet (probably these calls should even be stored in a display list, but that may not be the key issue here, or?).

I am grateful for any comments on this topic!


Always bet on VBOs.

probably these calls should even be stored in a display list
If you have all these points on the screen then display list won’t help. If large amount of them if outside view frustum, then display list can (but doesn’t have to) optimize this with frustum culling.
If you properly implement frustum culling and use it with VBO then you will have very high performance.

If I test every point if it is in the frustum this will mean iterating over every point each frame.

I suppose an octree would be much more efficient here, so that tree-cells can be checked, instead of individual points. This might mean however, that points in cells that are partly inside the frustum get rendered, even though they don’t end up on screen, but this may be a small price to pay.

Any thoughts on this?

I’d go with some optimisation structure like an octree, yeah. If the point data is static, you could compile each cell to a display list if you wanted.

Do people use display lists anymore? I’m hopelessly out of date :stuck_out_tongue:

[b]paul's opengl page[/b]

Yes it is static, so it would make sense to use display lists. But in my case I think I might be better of storing a the indices into the VBO for each cell, which I suppose is more or less the same thing…