Esempio n. 1
0
        protected override void OnLoad(EventArgs e)
        {
            GL.ClearColor(Color4.CadetBlue);
            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.Texture2D);

            VertexObjectGroupDefinition vertexGroupDefinition = new VertexObjectGroupDefinition(Properties.Resources.VertexShader, Properties.Resources.FragmentShader);

            vertexGroup = new VertexObjectGroup(vertexGroupDefinition);
            this.disposables.Add(vertexGroup);

            #region Models

            WavefrontModel  model       = new WavefrontModelLoader().Load(new FileInfo(@"C:\Users\pstepnowski\Documents\untitled.obj"));
            RenderableModel modelSphere = vertexGroup.Add(model);

            #endregion
            #region Scene Objects

            race = new Race(200);
            vertexGroup.Add(modelSphere, race.Spheres);
            playerSceneSphere = vertexGroup.Renderables.OfType <SceneSphere>().First(s => s.Sphere == race.PlayerSphere);

            #endregion

            Camera camera1 = new Camera(Width, Height);
            camera1.position = new Vector3(5, 2, 5);
            CameraFollow camera2 = new CameraFollow(Width, Height, playerSceneSphere);
            camera2.position = new Vector3(5, 2, 5);
            this.cameras.Add(camera2);

            TexturedObjectGroupDefinition texturedGroupDefinition = new TexturedObjectGroupDefinition(Properties.Resources.VertexShaderTextured, Properties.Resources.FragmentShaderTextured);
            texturedGroup = new TexturedObjectGroup(texturedGroupDefinition);
            this.disposables.Add(texturedGroup);

            FileInfo textureFile = new FileInfo(@"C:\Users\pstepnowski\Source\Repos\fdafadf\basics\Basics.Physics.Test.UI\Textures\concrete.png");
            Texture  texture     = texturedGroup.LoadTexture(textureFile);

            TestModelLoader modelLoader = new TestModelLoader();
            modelLoader.LoadTrack(texturedGroup, texture);

            //TexturedModel triangleModel = texturedGroup.Add(race.Ground);
            //texturedGroup.Add(triangleModel, texture.Handle, new Vector3());
        }
Esempio n. 2
0
        public void LoadTrack(TexturedObjectGroup texturedGroup, Texture texture)
        {
            WindowsFormsApp1.TestModel testModel     = WindowsFormsApp1.Form1.CreateTestModel2();
            List <TexturedVertex>      trackVertices = new List <TexturedVertex>();
            var minX = testModel.Vertices.Min(v => v.X);
            var maxX = testModel.Vertices.Max(v => v.X);
            var minZ = testModel.Vertices.Min(v => v.Z);
            var maxZ = testModel.Vertices.Max(v => v.Z);

            for (int i = 0; i < testModel.Vertices.Count; i++)
            {
                var            vertex         = testModel.Vertices[i];
                float          u              = ((i % 4) & 1) != 0 ? 255 : 0;
                float          v              = ((i % 4) & 2) != 0 ? 255 : 0;
                Vector3        position       = new Vector3(vertex.X, vertex.Y, vertex.Z);
                TexturedVertex texturedVertex = new TexturedVertex(position, new Vector2(u, v));
                trackVertices.Add(texturedVertex);
            }

            TexturedModel texturedModel = texturedGroup.Add(trackVertices.ToArray(), testModel.Indices.ToArray());

            texturedGroup.Add(texturedModel, texture.Handle, new Vector3());

            /*
             * List<TexturedVertex> trackVertices = new List<TexturedVertex>();
             * List<uint> trackIndices = new List<uint>();
             * Random random = new Random((int)DateTime.Now.Ticks);
             * TexturedVertex a = new TexturedVertex(new Vector3(-2, -0.2f, 0), new Vector2(0, 0));
             * TexturedVertex b = new TexturedVertex(new Vector3(2, -0.2f, 0), new Vector2(255, 0));
             * trackVertices.Add(a);
             * trackVertices.Add(b);
             * WindowsFormsApp1.Vector3d delta = new WindowsFormsApp1.Vector3d(0, 0, 10);
             * WindowsFormsApp1.Matrix3d matrix = WindowsFormsApp1.Matrix3d.RotationY(5 / 57.29577f);
             *
             * for (uint i = 0; i < 1; i++)
             * {
             * uint v = (i + 1) * 120 % 255;
             * delta.Mul(matrix);
             *
             * Vector3 d = new Vector3(b.Position.X + delta.X, b.Position.Y + delta.Y, b.Position.Z + delta.Z);
             * TexturedVertex texturedVertexD = new TexturedVertex(d, new Vector2(255, v));
             * PointF dp = new PointF(b.Position.X, b.Position.Z);
             * PointF dv = new PointF(b.Position.X + delta.Z, b.Position.Z - delta.X);
             * PointF ap = new PointF(a.Position.X, a.Position.Z);
             * PointF av = new PointF(a.Position.X + delta.X, a.Position.Z + delta.Z);
             * PointF p = MathHelper2.Intersection(dp, dv, ap, av);
             * Vector3 c = new Vector3(p.X, a.Position.Y, p.Y);
             * TexturedVertex texturedVertexC = new TexturedVertex(c, new Vector2(0, v));
             * trackVertices.Add(texturedVertexC);
             * trackVertices.Add(texturedVertexD);
             * trackIndices.Add(2 + i * 2);
             * trackIndices.Add(0 + i * 2);
             * trackIndices.Add(1 + i * 2);
             * trackIndices.Add(2 + i * 2);
             * trackIndices.Add(1 + i * 2);
             * trackIndices.Add(3 + i * 2);
             * a = texturedVertexC;
             * b = texturedVertexD;
             * }
             *
             * TexturedModel texturedModel = texturedGroup.Add(trackVertices.ToArray(), trackIndices.ToArray());
             * texturedGroup.Add(texturedModel, texture.Handle, new Vector3());
             */
        }