A surface is made up of all the operations that modified the surface’s triangles. If you rebuild the surface, re-performing all these operations can be slow. Snapshots can improve performance by recording all the triangles in a surface. Subsequent rebuilds start from the data of the snapshot, thus saving time by not performing complicated calculations that have already been done once. Surfaces have CreateSnapshot, RebuildSnapshot, and RemoveSnapshot methods. Both CreateSnapshot and RebuildSnapshot will overwrite an existing snapshot.
RebuildSnapshot will cause an error if the snapshot does not exist. CreateSnapshot and RebuildSnapshot can also cause errors if the surface is out-of-date.