protected void WriteGeometryVertexBuffer( BinaryWriter writer, short bindIndex, HardwareVertexBuffer vertexBuffer )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, MeshChunkID.GeometryVertexBuffer, 0 );
WriteShort( writer, bindIndex );
WriteShort( writer, (short)vertexBuffer.VertexSize );
IntPtr buf = vertexBuffer.Lock( BufferLocking.Discard );
try
{
WriteGeometryVertexBufferData( writer, vertexBuffer.Size, buf );
}
finally
{
vertexBuffer.Unlock();
}
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, MeshChunkID.GeometryVertexBuffer, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}