Esempio n. 1
0
        public static void SquareGridTest()
        {
            using (WorldWindow game = new WorldWindow())
            {
                Vector3 eye = new Vector3(-4, 4, -4);
                game.Camera.LookAt(eye, new Vector3());


                SquareGrid          grid = new SquareGrid(4, 4, 2.3f, 1.1f);
                ShaderModelRenderer sm   = new ShaderModelRenderer(grid);

                game.Models.Add(sm);


                UserInterface ui = new UserInterface(game);

                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time += (float)e.Time;
                    double fps = e.Time == 0 ? 1000 : 1.0 / e.Time;
                    ui.PrintCommonStats(e.Time);
                };

                game.Run(30);
            }
        }
Esempio n. 2
0
        public static void TwoMovingObjects()
        {
            Cube cube1 = new Cube();
            Cube cube2 = new Cube();
            ShaderModelRenderer sm1 = new ShaderModelRenderer(cube1);
            ShaderModelRenderer sm2 = new ShaderModelRenderer(cube2, sm1.ShaderProgram);

            using (WorldWindow game = new WorldWindow()
            {
                Title = "TwoMovingObjects"
            })
            {
                game.Camera.LookAt(new Vector3(-4, 4, -4), new Vector3());
                game.Models.Add(sm1);
                game.Models.Add(sm2);
                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time          += (float)e.Time;
                    cube1.Position = new Vector3(-1, 0.5f * (float)Math.Sin(time), 0);
                    cube1.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);

                    cube2.Position = new Vector3(1, -0.5f * (float)Math.Sin(time), 0);
                    cube2.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);
                };
                game.Run();
            }
        }
Esempio n. 3
0
        public static UserInterfaceSimpleTextbox AddUI(WorldWindow game)
        {
            UserInterfaceSimpleTextbox ui = new UserInterfaceSimpleTextbox();

            ui.BoxBackground = Color.FromArgb(0, 0, 0, 0);
            ShaderModelRenderer sm = new ShaderModelRenderer(ui)
            {
                VertexShaderFilaneme   = "Shaders/vs_tex.glsl",
                FragmentShaderFilename = "Shaders/fs_tex.glsl",
            };

            game.Models.Add(sm);
            return(ui);
        }
Esempio n. 4
0
        public static void ThreeShaders()
        {
            Cube cube1 = new Cube();
            Cube cube2 = new ColouredCube();
            Cube cube3 = new TexturedCube();
            ShaderModelRenderer sm1 = new ShaderModelRenderer(cube1);
            ShaderModelRenderer sm2 = new ShaderModelRenderer(cube2)
            {
                VertexShaderFilaneme = "Shaders/vs_col.glsl"
            };
            ShaderModelRenderer sm3 = new ShaderModelRenderer(cube3)
            {
                VertexShaderFilaneme   = "Shaders/vs_tex.glsl",
                FragmentShaderFilename = "Shaders/fs_tex.glsl"
            };

            using (WorldWindow game = new WorldWindow()
            {
                Title = "ThreeShaders"
            })
            {
                game.Camera.LookAt(new Vector3(-4, 4, -4), new Vector3());

                (cube3 as TexturedCube).TextureID = TextureLoader.LoadImage("Textures/opentksquare.png");

                game.Models.Add(sm1);
                game.Models.Add(sm2);
                game.Models.Add(sm3);

                UserInterface ui = new UserInterface(game);

                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time          += (float)e.Time;
                    cube1.Position = new Vector3(2, 0.05f * (float)Math.Sin(time), 0);
                    cube1.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);

                    cube2.Position = new Vector3(0, 0.05f * (float)Math.Sin(time), 2);
                    cube2.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);

                    cube3.Position = new Vector3(0, 0.05f * (float)Math.Sin(time), 0);
                    cube3.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);

                    ui.PrintCommonStats(e.Time);
                };
                game.Run();
            }
        }
Esempio n. 5
0
        public static void SingleObect()
        {
            Cube cube = new Cube();
            ShaderModelRenderer sm = new ShaderModelRenderer(cube);

            using (WorldWindow game = new WorldWindow()
            {
                Title = "SingleMovingObject"
            })
            {
                game.Camera.LookAt(new Vector3(-4, 4, -4), new Vector3());
                game.Models.Add(sm);
                game.Run();
            }
        }
Esempio n. 6
0
        static Vector3[] GenerateRandomCubes(WorldWindow game, int texID)
        {
            int    numCubes = 100;
            Random rand     = new Random();

            Vector3[] posOffsets = new Vector3[numCubes];
            for (int i = 0; i < numCubes; i++)
            {
                int  type = rand.Next(3);
                Cube cube;
                ShaderModelRenderer sm;
                if (type == 0)
                {
                    cube = new Cube();
                    sm   = new ShaderModelRenderer(cube);
                }
                else if (type == 1)
                {
                    cube = new ColouredCube();
                    sm   = new ShaderModelRenderer(cube)
                    {
                        VertexShaderFilaneme   = "Shaders/vs_col.glsl",
                        FragmentShaderFilename = "Shaders/fs.glsl"
                    };
                }
                else
                {
                    cube = new TexturedCube();
                    sm   = new ShaderModelRenderer(cube)
                    {
                        VertexShaderFilaneme   = "Shaders/vs_tex.glsl",
                        FragmentShaderFilename = "Shaders/fs_tex.glsl"
                    };
                    (cube as TexturedCube).TextureID = TextureLoader.LoadImage("Textures/opentksquare.png");
                }

                cube.Scale = new Vector3(0.5f, 0.5f, 0.5f);
                game.Models.Add(sm);
                Vector3 v = new Vector3((float)rand.NextDouble(), (float)rand.NextDouble(), (float)rand.NextDouble()) * (float)(Math.PI * 2);
                posOffsets[i] = v - (Vector3.One * (float)Math.PI);
            }
            return(posOffsets);
        }
Esempio n. 7
0
        public static void CosineTerrainGridTest()
        {
            using (WorldWindow game = new WorldWindow())
            {
                Vector3 eye = new Vector3(-400, 400, -400);
                game.Camera.LookAt(eye, new Vector3());
                game.CameraControl.MoveSpeed = 100;

                Vector2 SouthWestLatLong = new Vector2(-37, 174);
                Vector2 NorthEastLatLong = new Vector2(-36.9f, 174.2f);
                Terrain terrain          = new Terrain();

                TiledAltitudeMapReader mapReader = new CosineAltitudeMapReader();
                Vector3[,] lla = mapReader.GetMap(SouthWestLatLong, NorthEastLatLong);


                terrain.Recreate(lla);

                ShaderModelRenderer sm = new ShaderModelRenderer(terrain)
                {
                    VertexShaderFilaneme = "Shaders/vs_norm.glsl"
                };

                game.Models.Add(sm);


                UserInterface ui = new UserInterface(game);

                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time += (float)e.Time;
                    double fps = e.Time == 0 ? 1000 : 1.0 / e.Time;
                    ui.PrintCommonStats(e.Time);
                };

                game.Run(30);
            }
        }
Esempio n. 8
0
        public static void FlatTerrainGridTest()
        {
            using (WorldWindow game = new WorldWindow())
            {
                Vector3 eye = new Vector3(-4000, 4000, -4000);
                game.Camera.LookAt(eye, new Vector3());
                game.CameraControl.MoveSpeed = 1000;

                Terrain     terrain = new Terrain();
                int         rows    = 80;
                int         cols    = 100;
                TerrainInfo info    = new TerrainInfo()
                {
                    SouthWestLatLong         = new Vector2(-37, 174),
                    NorthEastLatLong         = new Vector2(-36.9f, 174.1f),
                    DegreesLatitudePerPixel  = 0.2 / (double)rows,
                    DegreesLongitudePerPixel = 0.2 / (double)cols
                };
                float[,] altInMetres = info.CreateFlatAltitudes(rows, cols);
                terrain.Recreate(info, altInMetres);

                ShaderModelRenderer sm = new ShaderModelRenderer(terrain);

                game.Models.Add(sm);


                UserInterface ui = new UserInterface(game);

                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time += (float)e.Time;
                    double fps = e.Time == 0 ? 1000 : 1.0 / e.Time;
                    ui.PrintCommonStats(e.Time);
                };

                game.Run(30);
            }
        }
Esempio n. 9
0
        public static void AucklandTerrainGridTest()
        {
            using (WorldWindow game = new WorldWindow())
            {
                Vector3 eye = new Vector3(-1000, 4000, -1000);
                game.Camera.LookAt(eye, new Vector3());
                game.CameraControl.MoveSpeed = 1000;
                game.SetZRange(100, 100000);

                Vector2 SouthWestLatLong = new Vector2(-37, 174);
                Vector2 NorthEastLatLong = new Vector2(-36, 175);
                Terrain terrain          = new Terrain();

                TiledAltitudeMapReader mapReader = new Srtm3Reader()
                {
                    AltitudeScale = 10
                };
                Vector3[,] lla = mapReader.GetMap(SouthWestLatLong, NorthEastLatLong);


                Vector2 auckland = new Vector2(-36.8468f, 174.7908f);
                terrain.Recreate(lla, auckland);

                ShaderModelRenderer sm = new ShaderModelRenderer(terrain)
                {
                    VertexShaderFilaneme = "Shaders/vs_norm.glsl"
                };

                game.Models.Add(sm);


                UserInterface ui = new UserInterface(game);

                game.RenderFrame += (o, e) => ui.PrintCommonStats(e.Time);


                game.Run(30);
            }
        }
Esempio n. 10
0
        public static void TextboxInterfaceWithObject()
        {
            using (WorldWindow game = new WorldWindow())
            {
                Vector3 eye = new Vector3(0, 0, -4);
                game.Camera.LookAt(eye, eye * 0.8f);
                UserInterfaceSimpleTextbox ui = new UserInterfaceSimpleTextbox();
                ui.BoxBackground = Color.FromArgb(40, 0, 0, 0);
                ShaderModelRenderer ui_sm = new ShaderModelRenderer(ui)
                {
                    VertexShaderFilaneme   = "Shaders/vs_tex.glsl",
                    FragmentShaderFilename = "Shaders/fs_tex.glsl",
                };

                ColouredCube        cube = new ColouredCube();
                ShaderModelRenderer sm2  = new ShaderModelRenderer(cube)
                {
                    VertexShaderFilaneme   = "Shaders/vs_col.glsl",
                    FragmentShaderFilename = "Shaders/fs.glsl",
                };
                game.Models.Add(sm2);
                game.Models.Insert(0, ui_sm);
                float time = 0;
                game.UpdateFrame += (o, e) =>
                {
                    time += (float)e.Time;
                    double fps = e.Time == 0 ? 1000 : 1.0 / e.Time;

                    ui.Text = "Fps: " + fps.ToString("N1") + " Time: " + time.ToString("N2") + "\nnewline" + "\nnewline1" + "\nnewline2" + "\nnewline3";

                    cube.Position = new Vector3(-1, 0.5f * (float)Math.Sin(time), 0);
                    cube.Rotation = new Vector3(0.3f * time, 0.1f * time, 0);
                };

                game.Run(30);
            }
        }