# XNA - DrawIndexedPrimitives or DrawUserIndexedPrimitives?

When rendering primitives in XNA, does it matter if I use DrawIndexedPrimitives() versus DrawUserIndexedPrimitives()? RB Whitaker uses the former, while Reimer's uses the latter.

From what I can tell, the intent is that if you're using a premade type that ships with XNA (such as VertexPositionNormalTexture), you should use the normal draw primitives function, while if you create a custom struct which satisfies IVertexType and/or VertexDeclaration, you should use the DrawUserPrimitives instead.

However, XNA places no such restriction on how they're used, and I am wondering why it wasn't just all rolled into one generic function to begin with.

DrawUserIndexedPrimitives() takes your vertices and indices from RAM, sends them to buffers on the GPU, then draws them. That means the data is sent to the gpu every time you call this function.
DrawIndexedPrimitives() requires you to create and set both a vertex and index buffer before calling it, and the data will stay on the gpu until those buffers are disposed. (See MSDN's example.)