Using Int4 in vertex data?

I have a custom vertex format that requires int4 for bone indices, however there’s no VertexElementFormat.IntVector4 or anything of the like. What’s the appropriate way to get an int4 through?

I haven’t gotten around to using it yet but I assume that if a marshal blit is used for the vertex data then the element format description will be mostly irrelevant.

public struct FinalVertex : IVertexType
{
    public Vector3 Position;
    public Vector3 Normal;
    public Vector4 Tangent; //W contains handedness
    public Vector2 TextureCoordinate;
    public Vector4 BoneWeights;
    public IntVector4 BoneIndices; //>>struct IntVector4 { int x, y, z, w; }
}

VertexElement[] elements = new VertexElement[] {
    new VertexElement(0, VertexElementFormat.Vector3, VertexElementUsage.Position, 0),                  // 12 bytes
    new VertexElement(12, VertexElementFormat.Vector3, VertexElementUsage.Normal, 0),                   // 12 bytes
    new VertexElement(24, VertexElementFormat.Vector4, VertexElementUsage.Tangent, 0),                  // 16 bytes, handed tangent
    new VertexElement(40, VertexElementFormat.Vector2, VertexElementUsage.TextureCoordinate, 0),        // 8 bytes
    new VertexElement(48, VertexElementFormat.Vector4, VertexElementUsage.BlendWeight, 0),              // 16 bytes
    new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendIndices, 0)              // 16 bytes, >>assuming it's just a blit
};`

public Vector4 BoneIndices;
new VertexElement(64, VertexElementFormat.Vector4, VertexElementUsage.BlendIndices, 0)

byte4?
Microsoft.Xna.Framework.Graphics.PackedVector.Byte4
new VertexElement(64, VertexElementFormat.Byte4, VertexElementUsage.BlendIndices, 0)

I could probably live with byte4 and deal with the nastiness later when something falls outside of those bone limits.

Though I’d still like to know about int4 for other cases.

You can also use shorts (Short2 and Short4), that should be enough for bone indices.