Exemple #1
0
        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();
        }
Exemple #3
0
        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());
            }
        }