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
};`