protected void WriteGeometry( BinaryWriter writer, VertexData vertexData )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, MeshChunkID.Geometry, 0 );
WriteUInt( writer, (uint)vertexData.vertexCount );
WriteGeometryVertexDeclaration( writer, vertexData.vertexDeclaration );
for ( short i = 0; i < vertexData.vertexBufferBinding.BindingCount; ++i )
WriteGeometryVertexBuffer( writer, i, vertexData.vertexBufferBinding.GetBuffer( i ) );
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, MeshChunkID.Geometry, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}