Exemplo n.º 1
0
        public void CalculateNormalsCubeTest()
        {
            Model cube = new ColouredCube();

            Vector3[] normals = NormalModel.CalculateNormals(cube);
            Vector3   sum     = new Vector3();

            foreach (Vector3 v in normals)
            {
                sum += v;
            }

            VectorAssertions.AreEqual(new Vector3(), sum, 0.0001);
        }
Exemplo n.º 2
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();
            }
        }
Exemplo n.º 3
0
        public void TriangleStripEnumeratorTest()
        {
            Cube cube = new ColouredCube();
            int  num  = 0;

            int[] touchedVertices = new int[cube.Vertices.Length];
            foreach (IndexedTriangle t in cube)
            {
                num++;
                touchedVertices[t.i0]++;
                touchedVertices[t.i1]++;
                touchedVertices[t.i2]++;
            }
            Assert.AreEqual(num, 2 * 6);
            foreach (int i in touchedVertices)
            {
                Assert.AreNotEqual(0, i);
            }
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
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);
            }
        }