Fast Rendering Using Strips and Vertex Caching



On today's PC graphics hardware, triangle strips is the most efficient primitive. In terms of graphics bandwidth, strips can potentially yield one vertex per triangle. This is three times more efficient than independent triangles which has three vertices per triangle.

This translates into less vertex data copies by the driver to the command fifos. You typically see 2 to 3 times less front side bus traffic when using strips. These advantages you will see in terms of frame rates. 10% to 30% speedups in frame rates have been measured by typical applications.


Vertex caching is next advance in optimizing graphics performance. In my work on geometry compression, I also showed a way to intelligently traverse a mesh so to reuse old vertices of the mesh. It depends on a small vertex cache called the "mesh buffer" on the graphics hardware. This effectively saves 2X in bandwidth over triangle strips. Hugues Hoppe showed in this year's SIGGRAPH how to "transparently" cache mesh vertices using Direct3D's indexed primitives. His method differs from mine in that he assumes the hardware does the cache management so there is no need for explicit references to old vertices as in my work. Both methods yield similar bandwidth savings. At 0.6 vertex/triangle both methods beat triangle strips by a factor of 2. You can read more about vertex caching on Hoppe's page or my Visualization '97 talk and my paper .

You can download free strips source code from my meshsdk page. Some demo examples are found on 3dfx developer website, under the Demo section.

I also gave a triangle strips talk at Microsoft Meltdown '99: see Talk Slides . It is titled "Using Strips for Higher Game Performance."

Examples:

Links:
Hughes Hoppe's page on vertex caching
STRIPE work by Francine Evans, Skiena, and A. Varshney.