private void Material_Render(string techniqueName)
{
RCamera camera = REngine.Instance._camera;
//REngine.Instance._graphics.GraphicsDevice.RenderState.CullMode = CullMode.CullCounterClockwiseFace;
GraphicsDevice graphicsDevice = REngine.Instance._graphics.GraphicsDevice;
_material.shader.effect.CurrentTechnique = _material.shader.effect.Techniques[techniqueName];
this.Matrix = _transforms[_model.Meshes[0].ParentBone.Index] * Matrix;
//_material.Prepare(this);
// Draw the model. A model can have multiple meshes, so loop.
foreach (ModelMesh mesh in _model.Meshes)
{
//foreach (Effect effect in mesh.Effects)
//{
//effect.Begin();
foreach (ModelMeshPart part in mesh.MeshParts)
{
part.Effect = _material.shader.effect;
}
//effect.Parameters["View"].SetValue(camera.viewMatrix);
//effect.Parameters["Projection"].SetValue(camera.projMatrix);
/*foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
foreach (ModelMeshPart part in mesh.MeshParts)
{
graphicsDevice.VertexDeclaration = part.VertexDeclaration;
graphicsDevice.Vertices[0].SetSource(mesh.VertexBuffer, part.StreamOffset, part.VertexStride);
graphicsDevice.Indices = mesh.IndexBuffer;
graphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, part.BaseVertex, 0, part.NumVertices, part.StartIndex, part.PrimitiveCount);
}
pass.End();
}
effect.End();
*/
//}
mesh.Draw();
}
}