   xnamath calling conventions
  I do not quite understand the purpose of FXMVECTOR.  From the documentation, it sounds like you should use this type to pass (up to the first three) XMVECTOR parameters to a function.  Then any XMVECTOR parameters after (4th, ...) should use CXMVECTOR.  The docs give this example of this convention:XMMATRIX XMMatrixTransformation2D(FXMVECTOR ScalingOrigin,FLOAT ScalingOrientation, FXMVECTOR Scaling, FXMVECTOR RotationOrigin, FLOAT Rotation, CXMVECTOR Translation);On Win32:typedef const XMVECTOR FXMVECTOR;typedef const XMVECTOR& CXMVECTOR;Can anyone explain the "magic" number 3 in the "first 3 XMVECTOR parameters"?Also, why does CXMVECTOR pass by reference, but FXMVECTOR does not?  How does that change the calling convention?  I thought to change the calling convention you prefix the function definition with __fastcall or similar attribute.   