public void Render(Device device) { if (Geometry.Clr != -1) { device.RenderState.Lighting = true; Microsoft.DirectX.Direct3D.Material mt = new Microsoft.DirectX.Direct3D.Material(); mt.AmbientColor = ColorValue.FromArgb(Geometry.Clr); mt.DiffuseColor = ColorValue.FromArgb(Geometry.Clr); device.RenderState.DiffuseMaterialSource = ColorSource.Material; device.Material = mt; device.RenderState.AmbientColor = Geometry.Clr; } device.VertexFormat = vFormat; device.SetStreamSource(0, vBuffer, 0); if (matIBuffers != null) { for (int mat = 0; mat < MaterialIndices.Length; mat++) { Microsoft.DirectX.Direct3D.Material oMat = device.Material; if (MaterialIndices[mat].Material.Texture == null) { Microsoft.DirectX.Direct3D.Material material = new Microsoft.DirectX.Direct3D.Material(); material.AmbientColor = ColorValue.FromColor(System.Drawing.Color.FromArgb(MaterialIndices[mat].Material.Ambient.A, MaterialIndices[mat].Material.Ambient.R, MaterialIndices[mat].Material.Ambient.G, MaterialIndices[mat].Material.Ambient.B)); material.DiffuseColor = ColorValue.FromColor(System.Drawing.Color.FromArgb(MaterialIndices[mat].Material.Diffuse.A, MaterialIndices[mat].Material.Diffuse.R, MaterialIndices[mat].Material.Diffuse.G, MaterialIndices[mat].Material.Diffuse.B)); device.Material = material; } else { device.SetTexture(0, MaterialIndices[mat].Material.Texture); } device.Indices = matIBuffers[mat]; device.DrawIndexedPrimitives(Geometry.PrimType, 0, 0, Geometry.Vertices.Length, 0, MaterialIndices[mat].PrimCount); device.Material = oMat; } } else if (iBuffer != null) { device.Indices = iBuffer; device.DrawIndexedPrimitives(Geometry.PrimType, 0, 0, Geometry.Vertices.Length, 0, numPrimitives); } else { device.Indices = null; device.DrawPrimitives(Geometry.PrimType, 0, numPrimitives); } }
protected void RenderDxScene() { //device.RenderState.FillMode = FillMode.WireFrame; //device.RenderState.CullMode = Cull.None; if (abScene.Lights != null) { for (int light = 0; light < abScene.Lights.Length; light++) { abScene.Lights[light].SetupDx(device.Lights[light]); } device.RenderState.Lighting = true; Microsoft.DirectX.Direct3D.Material mt = new Microsoft.DirectX.Direct3D.Material(); mt.AmbientColor = ColorValue.FromArgb(Color.Black.ToArgb()); mt.DiffuseColor = ColorValue.FromArgb(Color.White.ToArgb()); device.RenderState.DiffuseMaterialSource = ColorSource.Material; device.Material = mt; device.RenderState.AmbientColor = Color.Black.ToArgb(); } else { device.RenderState.Lighting = false; } device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, BackColor, 1, 0); if (abScene.CurrentCamera != -1) { viewMat = Matrix.LookAtLH(abScene.Cameras[abScene.CurrentCamera].Position, abScene.Cameras[abScene.CurrentCamera].Target, new Vector3(0, 1, 0)); } else { viewMat = Matrix.LookAtLH(new Vector3(40, 20, 20), new Vector3(), new Vector3(0, 1, 0)); } device.Transform.Projection = projMat; device.Transform.View = viewMat; device.Transform.World = Matrix.Identity; // render avalon view foreach (ABModel3D model in abScene.Models) { device.BeginScene(); model.Render(device); device.EndScene(); } device.Present(); }
public Obj_Polygon2D(Vector3[] points, Color fill) { Centroid = new Vector2(); diffuse = new Material(); diffuse.Diffuse = fill; ColorValue c = ColorValue.FromArgb(fill.ToArgb()); c.Alpha = 255 / 2; CalculateProperties(points); Console.WriteLine("Area = {0}", Area); Console.WriteLine("Centroid = {0}, {1}", Centroid.X, Centroid.Y); polygon = new CustomVertex.PositionColored[points.Length + 1]; polygon[0] = new CustomVertex.PositionColored(new Vector3(Centroid.X, Centroid.Y, 0), c.ToArgb()); for (int i = 0; i < points.Length; i++) { Console.WriteLine("{0} = {1}", i, points[i].ToString()); polygon[i + 1] = new CustomVertex.PositionColored(points[i], c.ToArgb()); } }