ID3DX10Mesh
is a higher-level wrapper. Internally, I expect it uses ID3D10Buffer
s and other things to render the mesh, but it keeps track of all the data for you and provides convenience functions that implement more complex operations. The upside is that you don't have to implement all that stuff yourself; the downside is the same one as with all higher-level wrappers, that if you want to do something outside of what it the class was designed for, it may be inefficient or even impossible.
On the other hand, ID3D10Buffer
is a very low-level object that basically just represents a chunk of VRAM in which you can store more or less arbitrary data, and which you can use as an input to shaders. When used to store vertex and index buffers they can be used to draw a mesh, but they also store shader parameters (in which case they're called "constant buffers").
X
in them (likeID3DX10Mesh
, versusID3DBuffer
note with noX
) are from the D3DX utility library and provide some kind of advanced functionality. \$\endgroup\$