How To: Draw a Model with a Custom Effect
Demonstrates how to load a Model file and draw the Model using a custom Effect without modifying the Content Pipeline.
The Complete Sample
The code in this topic shows you the technique. You can download a complete code sample for this topic, including full source code and any additional supporting files required by the sample.
Download ShadowMapping_Sample.zip.
Drawing a Model With a Custom Effect
When you load a Model, the model is set by default to use the BasicEffect. You can change this by customizing the content pipeline, or you can apply a new Effect to the Model when you load the Model.
To draw a model with a custom effect
In your game's LoadContent method, load your Model, typically using the ContentManager.
terrain = Content.Load<Model>("terrain");
In LoadContent, load your Effect, typically using the ContentManager.
MyEffect = content.Load<Effect>("CustomEffect");
Iterate through each ModelMeshPart in your model, and assign your Effect to the Effect property of the ModelMeshPart.
public static void RemapModel(Model model, Effect effect) { foreach (ModelMesh mesh in model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { part.Effect = effect; } } }
Draw the Model, using the steps outlined in How To: Render a Model with one exception: instead of using BasicEffect, use the Effect attached to the model.
foreach (ModelMesh mesh in terrain.Meshes) { foreach (Effect effect in mesh.Effects) { mesh.Draw(); } }