I saw on nVidia''s website that DrawIndexedPrimitiveVB is faster than DrawPrimitiveVB on the geForce. I''ll accept that perhaps they''ve optimized their hardware, but it still seems like there''s going to be additional memory reads in the IndexedPrimitive call, thus adding overhead. Am I missing something?
In the general case (not strictly geForce; I''m personally using a Voodoo3, and my programming partner uses a TNT2), which is faster? DrawIndexedPrimitiveVB or DrawPrimitiveVB? Does anyone have any data on this?
Opinion from someone who doesn''t really know much 3D: I believe the Indexed calls, although they would use fewer reads, would be quicker for 2 other reasons:
1) The primitive is more likely to fit in the cache memory as it is smaller (an index to a vertex is smaller than a vertex), which will make those extra reads trivial.
2) The primitive will move up your PCI/AGP bus faster due to it being smaller: this means more primitives per second.
Note that these qualities will only be true if an indexed primitive would be smaller than a ''normal'' primitive of the same kind: this is going to be most likely where your vertices are shared across many triangles, for example on curved or skinned surfaces. At the other extreme, you may notice a small performance degradation on cubes, for example.