protected void WriteGeometryVertexElement( BinaryWriter writer, VertexElement vertexElement )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, MeshChunkID.GeometryVertexElement, 0 );
WriteUShort( writer, (ushort)vertexElement.Source );
WriteUShort( writer, (ushort)vertexElement.Type );
WriteUShort( writer, (ushort)vertexElement.Semantic );
WriteUShort( writer, (ushort)vertexElement.Offset );
WriteUShort( writer, (ushort)vertexElement.Index );
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, MeshChunkID.GeometryVertexElement, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}