Beispiel #1
0
        private TerrainRenderer GetRenderer()
        {
            if (this.openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                try
                {
                    var    positionList = new List <vec3>();
                    string filename     = this.openFileDialog1.FileName;
                    using (var streamReader = new System.IO.StreamReader(filename))
                    {
                        while (!streamReader.EndOfStream)
                        {
                            string   line  = streamReader.ReadLine();
                            string[] parts = line.Split(new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                            float    x     = float.Parse(parts[0]);
                            float    y     = float.Parse(parts[1]);
                            float    z     = float.Parse(parts[2]);
                            positionList.Add(new vec3(x, y, z));
                        }
                    }
                    var renderer = TerrainRenderer.GetRenderer(positionList);
                    return(renderer);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }

            return(null);
        }
Beispiel #2
0
        private void 添加OToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TerrainRenderer renderer = GetRenderer();

            if (renderer != null)
            {
                this.terrainRendererList.Add(renderer);
                renderer.Initialize();
                UpdateCamera();
                var frmPropertyGrid = new FormProperyGrid(renderer);
                frmPropertyGrid.Show();
            }
        }
Beispiel #3
0
 private void UpdateCamera()
 {
     if (this.terrainRendererList.Count > 0)
     {
         TerrainRenderer first       = this.terrainRendererList[0];
         BoundingBox     boundingBox = first.BoundingBox;
         for (int i = 1; i < this.terrainRendererList.Count; i++)
         {
             boundingBox.Union(this.terrainRendererList[i].BoundingBox);
         }
         this.camera.ZoomCamera(boundingBox);
         this.boundingBox = boundingBox;
         //vec3 translate = boundingBox.GetCenter() - this.camera.Target;
         //this.camera.Target = this.camera.Target + translate;
         //this.camera.Position = this.camera.Position + translate;
     }
 }
Beispiel #4
0
        public static TerrainRenderer GetRenderer(IList <vec3> positions)
        {
            BoundingBox boundingBox = positions.Move2Center();

            IBufferable model       = new TerrainModel(positions);
            var         shaderCodes = new ShaderCode[2];

            shaderCodes[0] = new ShaderCode(File.ReadAllText(@"shaders\Terrain.vert"), ShaderType.VertexShader);
            shaderCodes[1] = new ShaderCode(File.ReadAllText(@"shaders\Terrain.frag"), ShaderType.FragmentShader);
            var map = new PropertyNameMap();

            map.Add("in_Position", TerrainModel.strPosition);
            var renderer = new TerrainRenderer(model, shaderCodes, map, boundingBox,
                                               new PointSizeSwitch(10));

            return(renderer);
        }