Describes the model conversion process implemented by XNA Framework Content Pipeline.
The conversion of a game asset in your project is a complex and detailed process comprised of many steps. The detailed description of the general process can be found here. However, it can also be helpful to follow the process from the perspective of a single game asset type—specifically, a model. This discussion focuses on one section (a horizontal cross-section, starting with the top asset group) of the Content DOM graphic, shown here.
Output from the Content Importer
Output from the Model Processor
The scene hierarchy (previously created by the content importer) is the input of the model processor (implemented by ModelProcessor) and is converted into a format usable by your game at run time. Optimization, such as reordering mesh triangles to maximize cache coherency, is also performed at this time. The conversion of content importer output to a run-time type or types, is the main goal of the model processor.
The types output by ModelProcessor are close to the final XNA Framework run-time types. For example, the ModelProcessor output type ModelContent corresponds to the XNA Framework run-time type Model Class. This class is similar to the run-time type but stores the model data as simple managed objects, rather than GPU data types. This approach avoids the instantiation of actual GPU objects during the XNA Game Studio Content Pipeline build process. This is essential when building graphics for the Xbox 360 platform because instantiation of these types on the Windows GPU during the build process would not be feasible.
Conversion of the scene hierarchy is broken down as follows:
The entire scene hierarchy, represented by a root NodeContent and its children, is converted to a ModelContent object.
All GeometryContent objects, containing the actual triangles, are converted to ModelMeshPart objects. As mentioned previously, a GeometryContent object contains a VertexContent, IndexCollection, and MaterialContent object. Although the ModelProcessor modifies the data in the IndexCollections, it does not change the type. The VertexContent object, received as input, has two corresponding output types: a VertexBufferContent Class, containing the optimized triangle data, and an array of VertexElement Structure objects, specifying the data contained in the VertexBufferContent Class.
The last step hands off any MaterialContent objects in the scene by chaining to the MaterialProcessor.

See Also