public void Render(Matrix world, Render3DContext context, Effect renderEffect, string techniqueName) { _graphicsDevice.BlendState = BlendState.Opaque; _graphicsDevice.DepthStencilState = DepthStencilState.Default; var transforms = new Matrix[_model.Bones.Count]; _model.CopyAbsoluteBoneTransformsTo(transforms); foreach (var mesh in _model.Meshes) { foreach (var effect in mesh.Effects) { effect.CurrentTechnique = effect.Techniques[techniqueName]; effect.Parameters["World"].SetValue(transforms[mesh.ParentBone.Index] * world); effect.Parameters["View"].SetValue(context.View); effect.Parameters["Projection"].SetValue(context.Projection); effect.Parameters["LightDir"].SetValue(context.LightDir); effect.Parameters["LightMatrix"].SetValue(context.LightMatrix); if (techniqueName != "ShadowDepth") { effect.Parameters["ShadowMap"].SetValue(context.NormalLightDepthRenderTarget); } } mesh.Draw(); } }
public void Render(Render3DContext context, Effect renderEffect, string techniqueName) { _geometry.Render(World, context, renderEffect, techniqueName); }