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.
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)