1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
m_device.Transform.World = Matrix.RotationYawPitchRoll(anglex, angley, 0);
// Activation de la prise en charge de la lumière par notre scène
m_device.RenderState.ZBufferEnable = true;
m_device.RenderState.ZBufferFunction = Compare.GreaterEqual;
m_device.RenderState.CullMode = Cull.CounterClockwise;
//m_device.RenderState.StencilEnable = true;
//m_device.RenderState.StencilFunction = Compare.LessEqual;
//m_device.RenderState.StencilPass = StencilOperation.IncrementSaturation;
m_device.RenderState.Lighting = true;
//m_device.RenderState.FillMode = FillMode.WireFrame;
m_device.RenderState.ShadeMode = ShadeMode.Phong;
m_device.RenderState.Ambient = Color.FromArgb(0x00, 0x30, 0x30, 0x30);
//On ajoute une lumière
m_device.Lights[0].Type = LightType.Directional;
m_device.Lights[0].Diffuse = Color.AliceBlue;
m_device.Lights[0].Direction = new Vector3(0.5f, -1f, 0.5f);
m_device.Lights[0].Commit();
m_device.Lights[0].Enabled = true;
m_device.Transform.World = Matrix.RotationYawPitchRoll(anglex, angley, 0);
m_device.Transform.View = Matrix.LookAtLH(new Vector3(0, 8, -30),
new Vector3(0, 0, 0), new Vector3(0, 1, 0));
m_device.Transform.Projection =
Matrix.PerspectiveFovLH((float)Math.PI / 4.0F, 1.55F, 0.2F, 1000.0F);
m_device.VertexFormat = VertexFormats.Position | VertexFormats.Normal;
#endregion
foreach (CObjet3D obj3d in mlst_Obj3D)
{
m_device.Material = mlst_Materiel.GetMateriel(obj3d.IdMateriel);
VertexBuffer vb = new VertexBuffer(typeof(CustomVertex.PositionNormal), obj3d.Mesh.NbVerts, m_device, Usage.WriteOnly, CustomVertex.PositionNormal.Format, Pool.Managed);
vb.SetData(obj3d.Mesh.cv, 0, LockFlags.None);
m_device.SetStreamSource(0, vb, 0);
m_device.DrawPrimitives(PrimitiveType.TriangleList, 0, (int)(obj3d.Mesh.NbVerts / 6));
while (!vb.Disposed)
{
vb.Dispose();
}
//ShowNormals(obj3d.Mesh.cv, obj3d.Mesh.NbVerts);
}
//Fin du rendu
m_device.EndScene();
m_device.Present(); //On affiche le rendu
return cst_OK; |
Partager