private static Direct3D.VertexElement ConvertElement(VertexElementDesc element, ref short loc) { Direct3D.DeclarationMethod declMethod = SlimDX.Direct3D9.DeclarationMethod.Default; Direct3D.DeclarationUsage declUsage; Direct3D.DeclarationType declType; int size = VertexLayout.SizeOf(element.DataType); switch (element.DataType) { case VertexElementDataType.Float1: declType = SlimDX.Direct3D9.DeclarationType.Float1; break; case VertexElementDataType.Float2: declType = SlimDX.Direct3D9.DeclarationType.Float2; break; case VertexElementDataType.Float3: declType = SlimDX.Direct3D9.DeclarationType.Float3; break; case VertexElementDataType.Float4: declType = SlimDX.Direct3D9.DeclarationType.Float4; break; case VertexElementDataType.Int: declType = SlimDX.Direct3D9.DeclarationType.Color; break; default: throw new NotImplementedException( element.DataType.ToString() + " not implemented."); } switch (element.ElementType) { case VertexElement.Position: declUsage = SlimDX.Direct3D9.DeclarationUsage.Position; break; case VertexElement.Texture: declUsage = SlimDX.Direct3D9.DeclarationUsage.TextureCoordinate; break; case VertexElement.Normal: declUsage = SlimDX.Direct3D9.DeclarationUsage.Normal; break; case VertexElement.Tangent: declUsage = SlimDX.Direct3D9.DeclarationUsage.Tangent; break; case VertexElement.DiffuseColor: declUsage = SlimDX.Direct3D9.DeclarationUsage.Color; break; case VertexElement.Bitangent: declUsage = SlimDX.Direct3D9.DeclarationUsage.Binormal; break; default: throw new NotImplementedException( element.ElementType.ToString() + " not implemented."); } loc += (short)size; return(new Direct3D.VertexElement(0, (short)(loc - size), declType, declMethod, declUsage, 0)); }