quote:Original post by Pete_
All of my geometry is displayed on the screen at the same time, so I doubt that would help. Am I correct about that?
No, it is in fact (besides batching several hundred/thousand vertices into one vbo call) the thing that boosts performance the most.
While algorithms that simplify the terrain (such as ROAM) do reduce the number of triangles somewhat (at the expense of extra CPU cycles), this is not a matter to a graphics adapter. Your card wont care much about 50k triangles. However, the CPU overhead for the simplification can be noticeable.
On the other side, a quadtree used to clip away the parts of the terrain that are not visible from your point of view easily eleminates something in the range of 1M to 2M triangles with only a few CPU cycles (more if you do it thoroughly).
If you draw all of your terrain at the same time, then this is what is going to happen:
1. You push each and every triangle through the rendering pipeline.
2. If you use vbo or display lists and if you are lucky, then the driver will do a good job and hold the vertices on the graphics card (so they are only transferred once). Otherwise, you will be sending 4 million vertices per frame over the AGP bus.
3. T&L is (at least partially) done for all those 4 million vertices, whether they are visible or not.
4. During T&L, the graphic adapter discovers one-by-one that it can actually discard 90 percent of those vertices.
5. The remaining 10 percent are passed to the rasterizer.
If you use a quadtree, this is what happens:
1. You set up a view frustum every time your camera view changes (easy operation)
2. You do a few bounding-box-in-frustum tests (maybe like 50) and eleminate 90 percent of all vertices because you can tell for sure they will never be visible from this point of view (since their bounding box is entirely invisible)
3. You push the remaining 10% into the rendering pipeline
4. Your graphics adapter is happy