Exemple #1
0
        public void Draw(int matID)
        {
            Gl.glUniformMatrix4fv(matID, 1, Gl.GL_FALSE, transformationMatrix.to_array());

            GPU.BindBuffer(vertexBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 0, IntPtr.Zero);
            if (colors.Count > 0)
            {
                GPU.BindBuffer(colorBufferID);
                Gl.glEnableVertexAttribArray(1);
                Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 0, IntPtr.Zero);
            }
            if (uvCoordinates.Count > 0)
            {
                GPU.BindBuffer(uvBufferID);
                Gl.glEnableVertexAttribArray(2);
                Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 0, IntPtr.Zero);
            }
            if (normals.Count > 0)
            {
                GPU.BindBuffer(normalBufferID);
                Gl.glEnableVertexAttribArray(3);
                Gl.glVertexAttribPointer(3, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 0, IntPtr.Zero);
            }

            if (texture != null)
            {
                texture.Bind();
            }
            if (indices.Count == 0)
            {
                Gl.glDrawArrays(Gl.GL_TRIANGLES, 0, vertices.Count);
            }
            else
            {
                Gl.glDrawElements(Gl.GL_TRIANGLES, indices.Count, Gl.GL_UNSIGNED_SHORT, IntPtr.Zero);
            }

            Gl.glDisableVertexAttribArray(0);
            if (colors.Count > 0)
            {
                Gl.glDisableVertexAttribArray(1);
            }
            if (uvCoordinates.Count > 0)
            {
                Gl.glDisableVertexAttribArray(2);
            }
            if (normals.Count > 0)
            {
                Gl.glDisableVertexAttribArray(3);
            }
        }
        public void health_intialization(string projectPath, Shader shader2D)
        {
            //############################################################################### (Health)
            //2D control
            hp  = new Texture(projectPath + "\\Textures\\HP.bmp", 9);
            bhp = new Texture(projectPath + "\\Textures\\BackHP.bmp", 10);
            float[] squarevertices =
            {
                -100,  100, -100f,
                0,       0,

                100,  -100, -100f,
                1,       1,

                -100, -100, -100f,
                0,       1,

                100,   100, -100f,
                1,       0,

                -100,  100, -100f,
                0,       0,

                100,  -100, -100f,
                1, 1
            };

            hpID = GPU.GenerateBuffer(squarevertices);


            backhealthbar = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.scale(new mat4(1), new vec3(1, 1, 1)), glm.translate(new mat4(1), new vec3(current_position.x, current_position.y, current_position.z))
            });

            healthbar = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.scale(new mat4(1), new vec3(1, 1, 1)), glm.translate(new mat4(1), new vec3(0, 0, 0))
            });

            shader2D.UseShader();
            mloc   = Gl.glGetUniformLocation(shader2D.ID, "model");
            scalef = 1;


            //enabling Depth test
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);
        }
Exemple #3
0
        public void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

            GPU.BindBuffer(vertexBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)0);
            Gl.glEnableVertexAttribArray(1);
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(6 * sizeof(float)));
            Gl.glDrawArrays(Gl.GL_LINES, 0, 6);

            if (click == true)// draw is clickeds
            {
                vertexBufferID1 = GPU.GenerateBuffer(vertex.vertices.ToArray());
                GPU.BindBuffer(vertexBufferID1);
                Gl.glEnableVertexAttribArray(0);
                Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)0);
                Gl.glEnableVertexAttribArray(1);
                Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(3 * sizeof(float)));
                Gl.glEnableVertexAttribArray(2);
                Gl.glVertexAttribPointer(2, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(6 * sizeof(float)));
                if (vertex.primitive == "Triangles")
                {
                    Gl.glDrawArrays(Gl.GL_TRIANGLES, vertex.start, vertex.count);
                }
                else if (vertex.primitive == "Lines")
                {
                    Gl.glDrawArrays(Gl.GL_LINES, vertex.start, vertex.count);
                }
                //Gl.glDrawArrays(Gl.GL_LINES, 6, 6);
                if (GraphicsForm.selected == true)
                {
                    Gl.glDrawArrays(Gl.GL_POINTS, vertex.selectedIndex, 1);
                    Gl.glPointSize(8);
                }
            }



            Gl.glDisableVertexAttribArray(0);
            Gl.glDisableVertexAttribArray(1);
            Gl.glDisableVertexAttribArray(2);
        }
        public void updatebuffers()
        {
            verts    = new List <float>();
            indicies = new List <ushort>();

            foreach (List <float> lst in GraphicsForm.vertexDict.Values)//
            {
                for (int i = 0; i < lst.Count; i++)
                {
                    verts.Add(lst[i]);
                }
            }

            foreach (ushort indx in GraphicsForm.vertexIndices)
            {
                indicies.Add(indx);
            }

            vertexID         = GPU.GenerateBuffer(verts.ToArray());
            indiciesBufferID = GPU.GenerateElementBuffer(indicies.ToArray());
        }
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            // set coloring
            shad1 = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            Gl.glClearColor(0, 0, 0, 1);
            float[] foll_screen =
            {
                -1,  1,
                1,   1,
                1,  -1,

                -1,  0,
                -1, -1,
                1, -1
            };


            vertexBufferID1 = GPU.GenerateBuffer(foll_screen);
        }
Exemple #6
0
 public void Initialize()
 {
     if (vertices.Count > 0)
     {
         vertexBufferID = GPU.GenerateBuffer(vertices);
     }
     if (colors.Count > 0)
     {
         colorBufferID = GPU.GenerateBuffer(colors);
     }
     if (normals.Count > 0)
     {
         normalBufferID = GPU.GenerateBuffer(normals);
     }
     if (uvCoordinates.Count > 0)
     {
         uvBufferID = GPU.GenerateBuffer(uvCoordinates);
     }
     if (indices.Count > 0)
     {
         indexBufferID = GPU.GenerateElementBuffer(indices);
     }
 }
Exemple #7
0
 public void Update(float[] vs, float[] ns)
 {
     GPU.UpdateBuffer(vs, vertexBufferID);
     GPU.UpdateBuffer(ns, normalBufferID);
 }
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            Shader3D    = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            WaterShader = new Shader(projectPath + "\\Shaders\\WaterVertexShader.vertexshader", projectPath + "\\Shaders\\WaterFragmentShader.fragmentshader");

            //SkyBox
            BackTexture   = new Texture(projectPath + "\\Textures\\back.jpg", 3, false);
            BottomTexture = new Texture(projectPath + "\\Textures\\bottom.jpg", 4, false);
            FrontTexture  = new Texture(projectPath + "\\Textures\\front.jpg", 5, false);
            LeftTexture   = new Texture(projectPath + "\\Textures\\left.jpg", 6, false);
            RightTexture  = new Texture(projectPath + "\\Textures\\right.jpg", 7, false);
            TopTexture    = new Texture(projectPath + "\\Textures\\top.jpg", 8, false);

            Gl.glClearColor(0, 0, 0.4f, 1);

            float[] SkyboxVertices =
            {
                // front
                -1, -1,  1, 1, 0, 1, 0, 0,        //0
                -1,  1,  1, 1, 0, 1, 0, 1,        //1
                1,  -1,  1, 1, 0, 1, 1, 0,        //2

                1,  -1,  1, 1, 0, 1, 1, 0,        //3
                1,   1,  1, 1, 0, 1, 1, 1,        //4
                -1,  1,  1, 1, 0, 1, 0, 1,        //5

                // back
                -1,  1, -1, 1, 0, 1, 0, 1,         //6
                -1, -1, -1, 1, 0, 1, 0, 0,         //7
                1,  -1, -1, 1, 0, 1, 1, 0,         //8

                1,  -1, -1, 1, 0, 1, 1, 0,         //9
                -1,  1, -1, 1, 0, 1, 0, 1,         //10
                1,   1, -1, 1, 0, 1, 1, 1,         //11

                // top
                -1,  1,  1, 1, 0, 1, 0, 0,         //12
                1,   1,  1, 1, 0, 1, 1, 0,         //13
                -1,  1, -1, 1, 0, 1, 0, 1,         //14

                1,   1,  1, 1, 0, 1, 1, 0,         //15
                -1,  1, -1, 1, 0, 1, 0, 1,         //16
                1,   1, -1, 1, 0, 1, 1, 1,         //17

                // bottom
                -1, -1,  1, 1, 0, 1, 0, 0,         //18
                1,  -1,  1, 1, 0, 1, 1, 0,         //19
                -1, -1, -1, 1, 0, 1, 0, 1,         //20

                1,  -1,  1, 1, 0, 1, 1, 0,         //21
                -1, -1, -1, 1, 0, 1, 0, 1,         //22
                1,  -1, -1, 1, 0, 1, 1, 1,         //23

                // right
                1,  -1,  1, 1, 0, 1, 0, 0,         //24
                1,   1,  1, 1, 0, 1, 0, 1,         //25
                1,   1, -1, 1, 0, 1, 1, 1,         //26

                1,   1, -1, 1, 0, 1, 1, 1,         //27
                1,  -1,  1, 1, 0, 1, 0, 0,         //28
                1,  -1, -1, 1, 0, 1, 1, 0,         //29

                // left
                -1, -1,  1, 1, 0, 1, 1, 0,       //30
                -1, -1, -1, 1, 0, 1, 0, 0,       //31
                -1,  1, -1, 1, 0, 1, 0, 1,       //32

                -1,  1, -1, 1, 0, 1, 0, 1,       //33
                -1, -1,  1, 1, 0, 1, 1, 0,       //34
                -1,  1,  1, 1, 0, 1, 1, 1,       //35
            };

            //Terrain
            TerrainImage    = (Bitmap)Bitmap.FromFile("heightMap.jpg");
            heights         = new float[TerrainImage.Width, TerrainImage.Height];
            TerrainVertices = new List <float>();
            float h_size = TerrainImage.Height;
            float w_size = TerrainImage.Width;
            Color pixel;
            int   x, y;

            for (x = 0; x < TerrainImage.Width; x++)
            {
                for (y = 0; y < TerrainImage.Height; y++)
                {
                    pixel         = TerrainImage.GetPixel(x, y); //get pixel di btrg3 el height"color" bta3 el pixel
                    heights[x, y] = pixel.R;                     //bakhod el R component, kan momken akhod g,b bs msh fr2a 3shan hya grey scale
                }
            }

            for (int i = 0; i < TerrainImage.Width - 1; i++)                // blef 3la TerrainImage, btl3 el pixel wl neighbours
            {                                                               // kda el list di feha vertices(x,y,z) w uv
                for (int j = 0; j < TerrainImage.Height - 1; j++)
                {
                    TerrainVertices.Add(i);
                    TerrainVertices.Add(heights[i, j] / 4);
                    TerrainVertices.Add(j);
                    TerrainVertices.Add(0);
                    TerrainVertices.Add(1);

                    TerrainVertices.Add(i + 1);
                    TerrainVertices.Add(heights[i + 1, j] / 4);
                    TerrainVertices.Add(j);
                    TerrainVertices.Add(1);
                    TerrainVertices.Add(1);

                    TerrainVertices.Add(i);
                    TerrainVertices.Add(heights[i, j + 1] / 4);
                    TerrainVertices.Add(j);
                    TerrainVertices.Add(0);
                    TerrainVertices.Add(0);

                    TerrainVertices.Add(i + 1);
                    TerrainVertices.Add(heights[i + 1, j + 1] / 4);
                    TerrainVertices.Add(j + 1);
                    TerrainVertices.Add(1);
                    TerrainVertices.Add(0);

                    ////////////////////////////repeted SkyboxVertices 3shan arsm square m7taga six vertices msh 4 bs


                    TerrainVertices.Add(i);
                    TerrainVertices.Add(heights[i, j] / 4);
                    TerrainVertices.Add(j);
                    TerrainVertices.Add(0);
                    TerrainVertices.Add(0);

                    TerrainVertices.Add(i + 1);
                    TerrainVertices.Add(heights[i, j] / 4);
                    TerrainVertices.Add(j);
                    TerrainVertices.Add(1);
                    TerrainVertices.Add(1);
                }
            }

            scaleMatrix = glm.scale(new mat4(1), new vec3(50, 50, 50));

            //grass
            GrassTexture  = new Texture(projectPath + "\\Textures\\grass.jpg", 10, false);
            GrassVertices = new List <float>();
            for (int i = 0; i < TerrainImage.Width - 1; i++)   // blef 3la TerrainImage, btl3 el pixel wl neighbours
            {                                                  // kda el list di feha vertices(x,y,z) w uv
                for (int j = 0; j < TerrainImage.Height - 1; j++)
                {
                    GrassVertices.Add(i);
                    GrassVertices.Add(heights[i, j] / 4);
                    GrassVertices.Add(j);
                    GrassVertices.Add(0);
                    GrassVertices.Add(1);

                    GrassVertices.Add(i + 1);
                    GrassVertices.Add(heights[i + 1, j] / 4);
                    GrassVertices.Add(j);
                    GrassVertices.Add(1);
                    GrassVertices.Add(1);

                    GrassVertices.Add(i);
                    GrassVertices.Add(heights[i, j + 1] / 4);
                    GrassVertices.Add(j);
                    GrassVertices.Add(0);
                    GrassVertices.Add(0);

                    GrassVertices.Add(i + 1);
                    GrassVertices.Add(heights[i + 1, j + 1] / 4);
                    GrassVertices.Add(j + 1);
                    GrassVertices.Add(1);
                    GrassVertices.Add(0);

                    GrassVertices.Add(i);
                    GrassVertices.Add(heights[i, j] / 4);
                    GrassVertices.Add(j);
                    GrassVertices.Add(0);
                    GrassVertices.Add(0);

                    GrassVertices.Add(i + 1);
                    GrassVertices.Add(heights[i, j] / 4);
                    GrassVertices.Add(j);
                    GrassVertices.Add(1);
                    GrassVertices.Add(1);
                    j += 8;
                }
                i += 8;
            }

            //Tree
            tree = new Model3D();
            tree.LoadFile(projectPath + "\\ModelFiles\\static\\tree", 11, "Tree.obj");

            TreeVertices = new List <float>();
            for (int i = 0; i < TerrainImage.Width / 4; i++)
            {
                for (int j = 0; j < TerrainImage.Height / 4; j++)
                {
                    TreeVertices.Add(i);
                    TreeVertices.Add(heights[i, j] / 4);
                    TreeVertices.Add(j);

                    TreeVertices.Add(i + 1);
                    TreeVertices.Add(heights[i + 1, j] / 4);
                    TreeVertices.Add(j);

                    TreeVertices.Add(i);
                    TreeVertices.Add(heights[i, j + 1] / 4);
                    TreeVertices.Add(j);
                }
            }


            //Water
            List <float> WaterVertices = new List <float>();

            for (int i = 0; i < TerrainImage.Width / 4; i++)   // blef 3la TerrainImage, btl3 el pixel wl neighbours
            {                                                  // kda el list di feha vertices(x,y,z) w uv
                for (int j = 0; j < TerrainImage.Height / 4; j++)
                {
                    WaterVertices.Add(i);
                    WaterVertices.Add(heights[i, j] / 4);
                    WaterVertices.Add(j);
                    WaterVertices.Add(0);
                    WaterVertices.Add(1);

                    WaterVertices.Add(i + 1);
                    WaterVertices.Add(heights[i + 1, j] / 4);
                    WaterVertices.Add(j);
                    WaterVertices.Add(1);
                    WaterVertices.Add(1);

                    WaterVertices.Add(i);
                    WaterVertices.Add(heights[i, j + 1] / 4);
                    WaterVertices.Add(j);
                    WaterVertices.Add(0);
                    WaterVertices.Add(0);

                    WaterVertices.Add(i + 1);
                    WaterVertices.Add(heights[i + 1, j + 1] / 4);
                    WaterVertices.Add(j + 1);
                    WaterVertices.Add(1);
                    WaterVertices.Add(0);

                    WaterVertices.Add(i);
                    WaterVertices.Add(heights[i, j] / 4);
                    WaterVertices.Add(j);
                    WaterVertices.Add(0);
                    WaterVertices.Add(0);

                    WaterVertices.Add(i + 1);
                    WaterVertices.Add(heights[i, j] / 4);
                    WaterVertices.Add(j);
                    WaterVertices.Add(1);
                    WaterVertices.Add(1);
                }
            }

            WaterTexture = new Texture(projectPath + "\\Textures\\water.PNG", 2);
            WaterTimeID  = Gl.glGetUniformLocation(Shader3D.ID, "t");

            //ground
            //ground = new Ground(256, 256, 0, 8);

            //Camera
            camera = new Camera();
            camera.Reset(0, 5, 5, 0, 0, 0, 0, 1, 0);
            ProjectionMatrix = camera.GetProjectionMatrix();
            ViewMatrix       = camera.GetViewMatrix();

            //Transformations and Shader Configurations
            transID = Gl.glGetUniformLocation(Shader3D.ID, "model");
            projID  = Gl.glGetUniformLocation(Shader3D.ID, "projection");
            viewID  = Gl.glGetUniformLocation(Shader3D.ID, "view");
            DataID  = Gl.glGetUniformLocation(Shader3D.ID, "data");
            vec2 data = new vec2(100, 50);

            Gl.glUniform2fv(DataID, 1, data.to_array());

            //Light
            int  LightPositionID = Gl.glGetUniformLocation(Shader3D.ID, "LightPosition_worldspace");
            vec3 lightPosition   = new vec3(1.0f, 20f, 4.0f);

            Gl.glUniform3fv(LightPositionID, 1, lightPosition.to_array());

            //setup the ambient light component.
            AmbientLightID = Gl.glGetUniformLocation(Shader3D.ID, "ambientLight");
            vec3 ambientLight = new vec3(0.2f, 0.18f, 0.01f);

            Gl.glUniform3fv(AmbientLightID, 1, ambientLight.to_array());

            //setup the eye position.
            EyePositionID = Gl.glGetUniformLocation(Shader3D.ID, "EyePosition_worldspace");

            SkyboxBufferID  = GPU.GenerateBuffer(SkyboxVertices);
            TerrainBufferID = GPU.GenerateBuffer(TerrainVertices.ToArray());
            GrassBufferID   = GPU.GenerateBuffer(GrassVertices.ToArray());
            WaterBufferID   = GPU.GenerateBuffer(WaterVertices.ToArray());

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);
        }
        public void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Shader3D.UseShader();

            /*WaterShader.UseShader();*/

            //water motion

            /*if (reverse)
             *  t -= 0.0002f;
             * else
             *  t += 0.0002f;
             * if (t > 0.2f)
             *  reverse = true;
             * if (t < 0)
             *  reverse = false;
             * Gl.glUniform1f(WaterTimeID, t);*/

            Gl.glUniformMatrix4fv(projID, 1, Gl.GL_FALSE, camera.GetProjectionMatrix().to_array());
            Gl.glUniformMatrix4fv(viewID, 1, Gl.GL_FALSE, camera.GetViewMatrix().to_array());
            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, scaleMatrix.to_array());

            //SKYBOX START
            GPU.BindBuffer(SkyboxBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 8 * sizeof(float), IntPtr.Zero);
            Gl.glEnableVertexAttribArray(1);
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 8 * sizeof(float), (IntPtr)(3 * sizeof(float)));

            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 8 * sizeof(float), (IntPtr)(6 * sizeof(float)));

            FrontTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 0, 6);

            BottomTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 18, 6);

            BackTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 6, 6);

            LeftTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 30, 6);

            RightTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 24, 6);

            TopTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 12, 6);
            //SKYBOX END

            //WATER START
            mat4 WaterModel = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.translate(new mat4(1), new vec3(-30, -65, -100)),
                glm.scale(new mat4(1), new vec3(2.5f, 0.6f, 0.6f))
            });

            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, WaterModel.to_array());

            GPU.BindBuffer(WaterBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), IntPtr.Zero);

            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            WaterTexture.Bind();
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);

            Gl.glDrawArrays(Gl.GL_TRIANGLE_STRIP, 0, TerrainImage.Height / 4 * TerrainImage.Width / 4);

            Gl.glDisable(Gl.GL_BLEND);

            /*WaterTexture.Bind();
             * Gl.glEnable(Gl.GL_BLEND);
             * Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
             * ground.Draw(transID);
             * Gl.glDisable(Gl.GL_BLEND);*/

            //WATER END

            //TREE START
            for (int i = 0; i < 4500 - 3; i += 100)
            {
                //tree.scalematrix = glm.scale(new mat4(1), new vec3(2f, 2.5f, 2f));
                tree.transmatrix = glm.translate(new mat4(1), new vec3(TreeVertices[i], -1 * TreeVertices[i + 1], TreeVertices[i + 2]));
                tree.Draw(transID);
            }
            //TREE END

            //GRASS START
            mat4 GrassModel = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.translate(new mat4(1), new vec3(-30, -65, -100)),
                glm.scale(new mat4(1), new vec3(1.5f, .3f, .3f))
            });

            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, GrassModel.to_array());

            GPU.BindBuffer(GrassBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), IntPtr.Zero);

            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            GrassTexture.Bind();

            for (int i = 0; i < GrassVertices.Count;)
            {
                Gl.glDrawArrays(Gl.GL_TRIANGLES, i, 5);
                i += 5;
            }
            //GRASS END

            //TERRAIN START
            mat4 model = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.translate(new mat4(1), new vec3(-30, -65, -100)), glm.scale(new mat4(1), new vec3(0.9f, 0.6f, 0.6f))
            });                                                                                                                                                                      //b3ml tranformations 3l terrain

            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, model.to_array());

            GPU.BindBuffer(TerrainBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), IntPtr.Zero);

            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 5 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            BottomTexture.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLE_STRIP, 0, TerrainImage.Height * TerrainImage.Width);

            Gl.glEnable(Gl.GL_BLEND);
            Gl.glBlendFunc(Gl.GL_SOURCE0_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
            //TERRAIN END

            Gl.glDisableVertexAttribArray(0);
            Gl.glDisableVertexAttribArray(1);
        }
Exemple #10
0
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");

            //tex1 = new Texture(projectPath + "\\Textures\\grass_mix_d.jpg", 2);
            tex1 = new Texture(projectPath + "\\Textures\\ground_cracks2v_d.jpg", 2);

            tex     = new Texture(projectPath + "\\Textures\\crate.jpg", 3);
            textri2 = new Texture(projectPath + "\\Textures\\crate.jpg", 4);


            //m = new md2LOL(projectPath + "\\ModelFiles\\animated\\md2LOL\\fiora.md2"); //bytl3 ghreb!!!!!!!!!!
            m = new md2LOL(projectPath + "\\ModelFiles\\zombie.md2");
            m.StartAnimation(animType_LOL.STAND);
            m.rotationMatrix    = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            m.scaleMatrix       = glm.scale(new mat4(1), new vec3(0.8f, 0.8f, 0.8f));
            m.TranslationMatrix = glm.translate(new mat4(1), new vec3(15, 1, 20));

            // enemy2 = new md2LOL(projectPath + "\\ModelFiles\\animated\\md2LOL\\zombie1.md2");
            enemy2 = new md2LOL(projectPath + "\\ModelFiles\\zombie.md2");
            enemy2.StartAnimation(animType_LOL.STAND);
            enemy2.rotationMatrix    = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            enemy2.scaleMatrix       = glm.scale(new mat4(1), new vec3(0.8f, 0.8f, 0.8f));
            enemy2.TranslationMatrix = glm.translate(new mat4(1), new vec3(30, 1, 20));

            //building PROBLEM HERE
            building = new Model3D();
            building.LoadFile(projectPath + "\\ModelFiles\\static\\building", 5, "Building 02.obj");
            building.scalematrix = glm.scale(new mat4(1), new vec3(20, 20, 30));
            building.transmatrix = glm.translate(new mat4(1), new vec3(200, 40, -300));

            //tree
            tree = new Model3D();
            tree.LoadFile(projectPath + "\\ModelFiles\\static\\tree", 6, "Tree.obj");
            tree.scalematrix = glm.scale(new mat4(1), new vec3(5f, 10f, 5f));
            tree.transmatrix = glm.translate(new mat4(1), new vec3(-70, 10, 1));

            //spider
            spider = new Model3D();
            spider.LoadFile(projectPath + "\\ModelFiles\\static\\spider", 7, "spider.obj");
            spider.scalematrix = glm.scale(new mat4(1), new vec3(0.099f, 0.099f, 0.099f));
            spider.transmatrix = glm.translate(new mat4(1), new vec3(-70, 2, 1));

            //jeep
            jeep = new Model3D();
            jeep.LoadFile(projectPath + "\\ModelFiles\\static\\car", 8, "dpv.obj");
            jeep.scalematrix = glm.scale(new mat4(1), new vec3(0.1f, 0.1f, 0.1f));
            jeep.transmatrix = glm.translate(new mat4(1), new vec3(-50, 5, 1));
            jeep.rotmatrix   = glm.rotate((float)((1 / 180) * Math.PI), new vec3(1, 0, 0));

            //house
            house = new Model3D();
            house.LoadFile(projectPath + "\\ModelFiles\\static\\house", 9, "house.obj");
            house.scalematrix = glm.scale(new mat4(1), new vec3(9, 9, 9));
            house.transmatrix = glm.translate(new mat4(1), new vec3(-60, 10, -45));


            // skybox
            Downtex  = new Texture(projectPath + "\\Textures\\nottingham_dn.jpg", 2); //ground
            Uptex    = new Texture(projectPath + "\\Textures\\nottingham_up.jpg", 3); //up
            Fronttex = new Texture(projectPath + "\\Textures\\nottingham_ft.jpg", 4); //front
            Righttex = new Texture(projectPath + "\\Textures\\nottingham_rt.jpg", 5); //right
            Backtex  = new Texture(projectPath + "\\Textures\\nottingham_bk.jpg", 6); ///back
            Lefttex  = new Texture(projectPath + "\\Textures\\nottingham_lf.jpg", 7); //left



            //define normal for each vertex
            float[] ground =
            {
                -10.0f, 0.0f,  10.0f,
                0,         0,      1,
                0,         1,
                0,         1,      0,

                10.0f,  0.0f, -10.0f,
                0,         0,      1,
                1,         0,
                0,         1,      0,


                -10.0f, 0.0f, -10.0f,
                0,         0,      1,
                0,         0,
                0,         1,      0,

                10.0f,  0.0f,  10.0f,
                0,         0,      1,
                1,         1,
                0,         1,      0,

                -10.0f, 0.0f,  10.0f,
                0,         0,      1,
                0,         1,
                0,         1,      0,

                10.0f,  0.0f, -10.0f,
                0,         0,      1,
                1,         0,
                0,         1,      0,
            };
            vertexBufferID = GPU.GenerateBuffer(ground);

            //skybox

            Gl.glClearColor(1.0f, 1.0f, 1.0f, 1);

            float[] myCube =
            {
                //ground
                -10.0f, -1.0f,-10.0f, //0
                1,          0, 0,
                0,          1, 0,

                -10.0f, -1.0f,10.0f, //1
                1,          0, 0,
                0,          1, 0,

                10.0f,  -1.0f,10.0f,//2
                1,          0, 0,
                0,          1, 0,

                10.0f,  -1.0f,-10.0f,//3
                1,          0, 0,
                0,          1, 0,

                //roof
                -10.0f,  9.0f,-10.0f,//4
                1,          0, 0,
                0,          1, 0,

                -10.0f,  9.0f,10.0f,//10
                1,          0, 0,
                0,          1, 0,

                10.0f,   9.0f,10.0f,//6
                1,          0, 0,
                0,          1, 0,

                10.0f,   9.0f,-10.0f,//7
                1,          0, 0,
                0,          1, 0,

                //back
                -10.0f, -1.0f,-10.0f, //8
                1,          0, 0,
                0,          1, 0,

                -10.0f,  9.0f,-10.0f,//10
                1,          0, 0,
                0,          1, 0, //normal

                10.0f,   9.0f,-10.0f,//9
                1,          0, 0,
                0,          1, 0,

                10.0f,  -1.0f,-10.0f,//11
                1,          0, 0,
                0,          1, 0,

                //right
                10.0f,  -1.0f,-10.0f,//12
                1,          0, 0,
                0,          1, 0,

                10.0f,   9.0f,-10.0f,//14
                1,          0, 0,
                0,          1, 0,

                10.0f,   9.0f,10.0f,//13
                1,          0, 0,
                0,          1, 0,

                10.0f,  -1.0f,10.0f,//110
                1,          0, 0,
                0,          1, 0,

                //front
                -10.0f, -1.0f,10.0f, //8
                1,          0, 0,
                0,          1, 0,

                10.0f,  -1.0f,10.0f,//11
                1,          0, 0,
                0,          1, 0,

                10.0f,   9.0f,10.0f,//10
                1,          0, 0,
                0,          1, 0,

                -10.0f,  9.0f,10.0f,//9
                1,          0, 0,
                0,          1, 0,

                //left
                -10.0f, -1.0f,-10.0f,  //20
                1,          0, 0,
                0,          1, 0,

                -10.0f, -1.0f,10.0f,//23
                1,          0, 0,
                0,          1, 0,

                -10.0f,  9.0f,10.0f,//21
                1,          0, 0,
                0,          1, 0,

                -10.0f,  9.0f,-10.0f,//22
                1,          0, 0,
                0,          1, 0,
            };


            float[] CubeCoord =
            {
                //down

                1, 0,
                0, 0,
                0, 1,
                1, 1,
                /////22222   up

                0, 0,
                1, 0,
                1, 1,
                0, 1,
                /////333333  BACK

                0, 1,
                0, 0,
                1, 0,
                1, 1,

                /////444444  right
                0, 1,
                0, 0,
                1, 0,
                1, 1,

                /////555555 front


                1, 1,
                0, 1,
                0, 0,
                1, 0,


                /////66666   left
                1, 1,
                0, 1,
                0, 0,
                1, 0,
            };



            SkyboxBufferID = GPU.GenerateBuffer(myCube);
            cubeCoordID    = GPU.GenerateBuffer(CubeCoord);

            //triangle
            float[] TrianleCoord =
            {
                0, 0,
                1, 1,
                0, 1,
            };

            float[] triangle =
            {
                -1.0f, -1.0f, 0.0f,
                0,         0,    0,
                1.0f,  -1.0f, 0.0f,
                0,         0,    0,
                0.0f,   1.0f, 0.0f,
                0,         0,    0,
            };

            vertexBufferID2 = GPU.GenerateBuffer(triangle);
            TriangleCoordID = GPU.GenerateBuffer(TrianleCoord);

            //2nd triangle
            //triangle
            float[] TrianleCoord2 =
            {
                0, 0,
                1, 1,
                0, 1,
            };

            float[] triangle2 =
            {
                -1.0f, -1.0f, 0.0f,
                0,         0,    0,
                1.0f,  -1.0f, 0.0f,
                0,         0,    0,
                0.0f,   1.0f, 0.0f,
                0,         0,    0,
            };

            vertexBuffer2ID2 = GPU.GenerateBuffer(triangle2);
            TriangleCoord2ID = GPU.GenerateBuffer(TrianleCoord2);


            Gl.glClearColor(0, 0, 0.4f, 1);

            cam = new Camera();
            cam.Reset(0, 34, 100, 0, 0, 0, 0, 1, 0);

            ProjectionMatrix = cam.GetProjectionMatrix();
            ViewMatrix       = cam.GetViewMatrix();

            transID = Gl.glGetUniformLocation(sh.ID, "trans"); //7ala m7l l model kman fl vertex shader
            projID  = Gl.glGetUniformLocation(sh.ID, "projection");
            viewID  = Gl.glGetUniformLocation(sh.ID, "view");
            //modelID = Gl.glGetUniformLocation(sh.ID, "model");

            modelmatrix = glm.scale(new mat4(1), new vec3(50, 50, 50)) * glm.translate(new mat4(1), new vec3(1, 1, 1)); //here! zombies
            // modelmatrix2 = glm.scale(new mat4(1), new vec3(15,15,15)) * glm.translate(new mat4(1), new vec3(80, 100, -100)); //wooden triangle1

            sh.UseShader();

            //get location of specular and attenuation then send their values
            //get location of light position and send its value
            //setup the ambient light component.
            //setup the eye position.

            camposID = Gl.glGetUniformLocation(sh.ID, "campos");

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);
        }
Exemple #11
0
        public void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            sh.UseShader();

            Gl.glUniformMatrix4fv(projID, 1, Gl.GL_FALSE, ProjectionMatrix.to_array());
            Gl.glUniformMatrix4fv(viewID, 1, Gl.GL_FALSE, ViewMatrix.to_array());

            //send the value of camera position (eye position)

            // m.TranslationMatrix = glm.translate(new mat4(1), new vec3(100, 0, 0)); //zombie
            m.Draw(transID);

            // enemy2.TranslationMatrix = glm.translate(new mat4(1), new vec3(50, 0, 0)); //zombie
            enemy2.Draw(transID);

            //ground draw
            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, vertexBufferID);
            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, modelmatrix.to_array());
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), IntPtr.Zero);
            Gl.glEnableVertexAttribArray(1);
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(6 * sizeof(float)));
            //enable another vertex attribute for normals
            //describe the attribute and recompute the stride for all attributes
            Gl.glEnableVertexAttribArray(3);
            Gl.glVertexAttribPointer(3, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(8 * sizeof(float)));
            tex1.Bind();
            Gl.glDrawArrays(Gl.GL_TRIANGLES, 0, 6);

            ///////////////////////////////skybox draw & textures/////////////////////////////////////////////
            GPU.BindBuffer(SkyboxBufferID);
            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, SkyboxBufferID);
            Gl.glEnableVertexAttribArray(0);
            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), IntPtr.Zero);
            Gl.glEnableVertexAttribArray(1);
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(3 * sizeof(float)));
            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 9 * sizeof(float), (IntPtr)(6 * sizeof(float)));
            //cube coord
            GPU.BindBuffer(cubeCoordID);
            Gl.glEnableVertexAttribArray(2);
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 0, (IntPtr)(0));

            Downtex.Bind();
            //Gl.glDrawArrays(Gl.GL_TRIANGLES,0,36);
            Gl.glDrawArrays(Gl.GL_QUADS, 0, 4);

            Uptex.Bind();
            Gl.glDrawArrays(Gl.GL_QUADS, 4, 4);

            Backtex.Bind();
            Gl.glDrawArrays(Gl.GL_QUADS, 8, 4);

            Righttex.Bind();
            Gl.glDrawArrays(Gl.GL_QUADS, 12, 4);

            Fronttex.Bind();
            Gl.glDrawArrays(Gl.GL_QUADS, 16, 4);

            Lefttex.Bind();
            Gl.glDrawArrays(Gl.GL_QUADS, 20, 4);

            building.Draw(transID); // PROBLEM HERE
            tree.Draw(transID);     //passing model id but its called transid
            spider.Draw(transID);
            jeep.Draw(transID);
            house.Draw(transID);

            /*
             * //triangle drawing
             * GPU.BindBuffer(vertexBufferID2);
             * Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, modelmatrix2.to_array());
             * Gl.glEnableVertexAttribArray(0);
             * Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), IntPtr.Zero);
             * Gl.glEnableVertexAttribArray(1);
             * Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), (IntPtr)(3 * sizeof(float)));
             * //coord
             * GPU.BindBuffer(TriangleCoordID);
             * Gl.glEnableVertexAttribArray(2);
             * Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 0, (IntPtr)(0));
             * tex.Bind();
             * //  Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, glm.translate(new mat4(1),cam.center).to_array());
             * Gl.glDrawArrays(Gl.GL_TRIANGLES, 0, 3);
             *
             * //2nd triangle drawing
             * //triangle drawing
             * GPU.BindBuffer(vertexBuffer2ID2);
             * Gl.glEnableVertexAttribArray(0);
             * Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), IntPtr.Zero);
             * Gl.glEnableVertexAttribArray(1);
             * Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), (IntPtr)(3 * sizeof(float)));
             * //coord
             * GPU.BindBuffer(TriangleCoord2ID);
             * Gl.glEnableVertexAttribArray(2);
             * Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 0, (IntPtr)(0));
             * textri2.Bind(); */


            //     Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, glm.translate(new mat4(1), (IntPtr)(0)));

            Gl.glDrawArrays(Gl.GL_TRIANGLES, 0, 3);
        }
Exemple #12
0
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            Gl.glClearColor(0.0f, 0.0f, 0.4f, 1);

            float[] verts =
            {
                //Axis
                //x
                0.0f, 0.0f,  0.0f,
                1.0f, 0.0f,  0.0f, //R
                0.0f, 0.0f,  0.0f,
                5.0f, 0.0f,  0.0f,
                1.0f, 0.0f,  0.0f, //R
                0.0f, 0.0f,  0.0f,
                //y
                0.0f, 0.0f,  0.0f,
                0.0f, 1.0f,  0.0f, //G
                0.0f, 0.0f,  0.0f,
                0.0f, 5.0f,  0.0f,
                0.0f, 1.0f,  0.0f, //G
                0.0f, 0.0f,  0.0f,
                //z
                0.0f, 0.0f,  0.0f,
                0.0f, 0.0f,  1.0f, //B
                0.0f, 0.0f,  0.0f,
                0.0f, 0.0f, -5.0f,
                0.0f, 0.0f,  1.0f, //B
                0.0f, 0.0f,  0.0f,
            };


            vertexBufferID = GPU.GenerateBuffer(verts);
            List <mat4> Transformations = new List <mat4>();

            Transformations.Add(glm.scale(new mat4(1), new vec3(1, 2, 1)));
            Transformations.Add(glm.rotate(-30.0f / 180.0f * 3.127f, new vec3(0, 1, 0)));
            ModelMatrix = MathHelper.MultiplyMatrices(Transformations);
            //ProjectionMatrix = glm.perspective(FOV, Width / Height, Near, Far);

            // View matrix
            ViewMatrix = glm.lookAt(
                new vec3(0, 5, 5),
                new vec3(0, 2, 0),
                new vec3(0, 1, 0)
                );

            ProjectionMatrix = glm.perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);
            List <mat4> mvp = new List <mat4>();

            mvp.Add(ModelMatrix);
            mvp.Add(ViewMatrix);
            mvp.Add(ProjectionMatrix);
            MVP = MathHelper.MultiplyMatrices(mvp);

            // Model matrix: apply transformations to the model

            // Our MVP matrix which is a multiplication of our 3 matrices


            sh.UseShader();


            //Get a handle for our "MVP" uniform (the holder we created in the vertex shader)
            MVPID = Gl.glGetUniformLocation(sh.ID, "mvp");
            //pass the value of the MVP you just filled to the vertex shader
            Gl.glUniformMatrix4fv(MVPID, 1, Gl.GL_FALSE, MVP.to_array());
        }
        public void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);

            Gl.glLineWidth(1.5f);

            Gl.glUniform1f(checkTextureID, 0); //bb3t bool b 0 3shan 23rf hrsm b color wala texture
            Gl.glUniform1f(checkLightID, 0);   //bb3t bool b 0 3shan 23rf ha apply light wla la2

            Gl.glUniformMatrix4fv(projID, 1, Gl.GL_FALSE, ProjectionMatrix.to_array());
            Gl.glUniformMatrix4fv(viewID, 1, Gl.GL_FALSE, ViewMatrix.to_array());
            Gl.glUniformMatrix4fv(transID, 1, Gl.GL_FALSE, ModelMatrix.to_array());
            Gl.glUniform3fv(EyePositionID, 1, cam.GetCameraPosition().to_array());


            Gl.glEnableVertexAttribArray(0);                    //pos
            Gl.glEnableVertexAttribArray(1);                    //color
            Gl.glEnableVertexAttribArray(2);                    //uv
            Gl.glEnableVertexAttribArray(3);                    //normal

            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, planeBufferID); //plane

            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), (IntPtr)0);
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 6 * sizeof(float), (IntPtr)(3 * sizeof(float)));

            Gl.glDrawArrays(Gl.GL_LINE_LOOP, 0, 4);
            Gl.glDrawArrays(Gl.GL_LINES, 4, 6);

            if (setInterpolationId == true)
            {
                vertexID           = GPU.GenerateBuffer(interpolatedList.ToArray());
                setInterpolationId = false;
            }
            else
            {
                vertexID = GPU.GenerateBuffer(verts.ToArray());
            }

            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, vertexID);                                                             //vertices

            Gl.glVertexAttribPointer(0, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), IntPtr.Zero);                 //pos
            Gl.glVertexAttribPointer(1, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(3 * sizeof(float))); //color
            Gl.glVertexAttribPointer(2, 2, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(6 * sizeof(float))); //uv
            Gl.glVertexAttribPointer(3, 3, Gl.GL_FLOAT, Gl.GL_FALSE, 11 * sizeof(float), (IntPtr)(8 * sizeof(float))); //normal

            Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, indiciesBufferID);                                             //indicies

            if (selectedVertex == true)
            {
                Gl.glPointSize(5);
                Gl.glDrawArrays(Gl.GL_POINTS, selectedVertexIndex, 1);
            }
            if (GraphicsForm.applyTexture)
            {
                Gl.glUniform1f(checkTextureID, 1); //bb3t bool b 1 3shan arsm texture
            }
            if (GraphicsForm.applyLight)
            {
                Gl.glUniform1f(checkLightID, 1); //bb3t bool b 1 3shan arsm texture
            }
            for (int i = 0; i < GraphicsForm.modesDict.Count; i++)
            {
                string   key         = GraphicsForm.modesDict.Keys.ElementAt(i);
                string[] arr         = key.Split(' ');
                string   drawingMode = arr[0];


                if (drawingMode == "GL_TRIANGLE_FAN")
                {
                    Gl.glDrawElements(Gl.GL_TRIANGLE_FAN, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_TRIANGLE_FAN, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
                else if (drawingMode == "GL_TRIANGLES")
                {
                    Gl.glDrawElements(Gl.GL_TRIANGLES, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_TRIANGLES, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
                else if (drawingMode == "GL_LINES")
                {
                    Gl.glDrawElements(Gl.GL_LINES, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_LINES, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
                else if (drawingMode == "GL_LINE_LOOP")
                {
                    Gl.glDrawElements(Gl.GL_LINE_LOOP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_LINE_LOOP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
                else if (drawingMode == "GL_POINTS")
                {
                    Gl.glPointSize(15);
                    Gl.glDrawElements(Gl.GL_POINTS, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    //Gl.glUniform1f(checkTextureID, 0);
                }
                else if (drawingMode == "GL_LINE_STRIP")
                {
                    Gl.glDrawElements(Gl.GL_LINE_STRIP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_LINE_STRIP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
                else if (drawingMode == "GL_TRIANGLE_STRIP")
                {
                    Gl.glDrawElements(Gl.GL_TRIANGLE_STRIP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    if (GraphicsForm.applyTexture)
                    {
                        Gl.glDrawElements(Gl.GL_TRIANGLE_STRIP, GraphicsForm.modesDict[key].Item2, Gl.GL_UNSIGNED_SHORT, (IntPtr)(sizeof(ushort) * (GraphicsForm.modesDict[key].Item1)));
                    }
                }
            }

            Gl.glDisableVertexAttribArray(0);
            Gl.glDisableVertexAttribArray(1);
            Gl.glDisableVertexAttribArray(2);
            Gl.glDisableVertexAttribArray(3);
        }
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            Gl.glClearColor(0.6f, 0.6f, 0.6f, 1);

            float[] backGroundVertices =
            {
                //plane
                -2.0f,  0.0f,  2.0f,
                1.0f,   1.0f,  1.0f, //color w
                -2.0f,  0.0f, -2.0f,
                1.0f,   1.0f,  1.0f, //color w
                2.0f,   0.0f, -2.0f,
                1.0f,   1.0f,  1.0f, //color w
                2.0f,   0.0f,  2.0f,
                1.0f,   1.0f,  1.0f, //color w

                //Axis
                //x
                -2.0f,  0.0f,  0.0f,
                1.0f,   0.0f,  0.0f, //R
                2.0f,   0.0f,  0.0f,
                1.0f,   0.0f,  0.0f, //R

                //y
                0.0f,  -2.0f,  0.0f,
                0.0f,   1.0f,  0.0f, //G
                0.0f,   2.0f,  0.0f,
                0.0f,   1.0f,  0.0f, //G

                //z
                0.0f,   0.0f,  2.0f,
                0.0f,   0.0f,  1.0f, //B
                0.0f,   0.0f, -2.0f,
                0.0f,   0.0f,  1.0f, //B
            };
            sh.UseShader();

            planeBufferID = GPU.GenerateBuffer(backGroundVertices);
            vertexID      = GPU.GenerateBuffer(verts.ToArray());


            transID = Gl.glGetUniformLocation(sh.ID, "trans");
            projID  = Gl.glGetUniformLocation(sh.ID, "projection");
            viewID  = Gl.glGetUniformLocation(sh.ID, "view");

            DataID          = Gl.glGetUniformLocation(sh.ID, "data");
            EyePositionID   = Gl.glGetUniformLocation(sh.ID, "EyePosition_worldspace");
            AmbientLightID  = Gl.glGetUniformLocation(sh.ID, "ambientLight");
            DiffuseLightID  = Gl.glGetUniformLocation(sh.ID, "diffuseLight");
            SpecularLightID = Gl.glGetUniformLocation(sh.ID, "specularLight");

            LightPosID     = Gl.glGetUniformLocation(sh.ID, "LightPosition_worldspace");
            checkTextureID = Gl.glGetUniformLocation(sh.ID, "checkTextureOut");
            checkLightID   = Gl.glGetUniformLocation(sh.ID, "checkLightOut");

            cam = new Camera();
            cam.Reset(0, 2, 5, 0, 0, 0, 0, 1, 0);

            ProjectionMatrix = cam.GetProjectionMatrix();
            ViewMatrix       = cam.GetViewMatrix();



            // Model matrix: apply transformations to the model
            List <mat4> transformations = new List <mat4>();

            transformations.Add(glm.scale(new mat4(1), new vec3(1, 2, 1)));
            transformations.Add(glm.rotate(-30.0f / 180 * 3.14f, new vec3(0, 1, 0)));
            ModelMatrix = MathHelper.MultiplyMatrices(transformations);
        }
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            Gl.glClearColor(1, 0, 0, 1);
            float[] verts =
            {
                // 1-  A			  point index
                //-----
                -0.7f,    0.85f, 0.0f,  //0
                -0.65f,   0.95f, 0.0f,  //1
                -0.6f,    0.85f, 0.0f,  //2
                -0.63f,    0.9f, 0.0f,  //3
                -0.68f,    0.9f, 0.0f,  //4

                // 2 - STAR
                //----------
                -0.7f,     0.8f, 0.0f, //5
                -0.75f,    0.8f, 0.0f, //6
                -0.75f,   0.75f, 0.0f, //7
                -0.7f,    0.75f, 0.0f, //8
                -0.7f,     0.7f, 0.0f, //9
                -0.75f,    0.7f, 0.0f, //10

                -0.65f,    0.8f, 0.0f, //11
                -0.6f,     0.8f, 0.0f, //12
                -0.625f,   0.8f, 0.0f, //13
                -0.625f,   0.7f, 0.0f, //14

                -0.55f,    0.7f, 0.0f, //15
                -0.5f,     0.8f, 0.0f, //16
                -0.45f,    0.7f, 0.0f, //17
                -0.48f,   0.75f, 0.0f, //18
                -.53f,    0.75f, 0.0f, //19

                -0.4f,     0.7f, 0.0f, //20
                -0.4f,     0.8f, 0.0f, //21
                -0.35f,    0.8f, 0.0f, //22
                -0.35f,   0.75f, 0.0f, //23
                -0.4f,    0.75f, 0.0f, //24
                -0.35f,    0.7f, 0.0f, //25

                //3 - IS
                -0.4f,    0.55f, 0.0f, //26
                -0.4f,    0.65f, 0.0f, //27

                -0.35f,   0.55f, 0.0f, //28
                -0.3f,    0.55f, 0.0f, //29
                -0.3f,     0.6f, 0.0f, //30
                -0.35f,    0.6f, 0.0f, //31
                -0.35f,   0.65f, 0.0f, //32
                -0.3f,    0.65f, 0.0f, //33

                //4 - BORN
                -0.5f,     0.4f, 0, //34
                -0.45f,    0.4f, 0, //35
                -0.45f,   0.45f, 0, //36
                -0.5f,    0.45f, 0, //37
                -0.5f,    0.45f, 0, //38
                -0.45f,   0.45f, 0, //39
                -0.45f,    0.5f, 0, //40
                -0.5f,     0.5f, 0, //41

                -0.41f,   0.44f, 0, //42
                -0.39f,   0.47f, 0, //43
                -0.35f,   0.47f, 0, //44
                -0.33f,   0.44f, 0, //45
                -0.35f,   0.42f, 0, //46
                -0.39f,   0.42f, 0, //47

                -0.3f,     0.4f, 0, //48
                -0.3f,     0.5f, 0, //49
                -0.25f,    0.5f, 0, //50
                -0.25f,   0.45f, 0, //51
                -0.3f,    0.45f, 0, //52
                -0.25f,    0.4f, 0, //53

                -0.2f,     0.4f, 0, //54
                -0.2f,     0.5f, 0, //55
                -0.2f,     0.5f, 0, //56
                -0.15f,    0.4f, 0, //57
                -0.15f,    0.4f, 0, //58
                -0.15f,    0.5f, 0, //59

                //5 - right Hand
                0.30f,    0.50f, 0, //60
                -0.10f,   0.50f, 0, //61
                -0.05f,   0.45f, 0, //62
                -0.10f,   0.50f, 0, //63
                -0.05f,   0.55f, 0, //64

                //6 - left Hand
                0.50f,    0.50f, 0, //65
                0.70f,    0.50f, 0, //66
                0.70f,    0.40f, 0, //67
                0.65f,    0.45f, 0, //68
                0.70f,    0.40f, 0, //69
                0.75f,    0.45f, 0, //70

                //7 - body
                0.30f,    0.30f, 0, //71
                0.50f,    0.30f, 0, //72
                0.50f,    0.55f, 0, //73
                0.30f,    0.30f, 0, //74
                0.50f,    0.55f, 0, //75
                0.30f,    0.55f, 0, //76

                //8 - left leg
                0.30f,    0.25f, 0, //77
                0.40f,    0.25f, 0, //78
                0.35f,    0.30f, 0, //79

                //9 - right leg
                0.40f,    0.25f, 0, //80
                0.50f,    0.25f, 0, //81
                0.45f,    0.30f, 0, //82

                //10 - neck
                0.40f,    0.55f, 0, //83
                0.40f,    0.60f, 0, //84

                //11 - head
                0.35f,    0.60f, 0, //85
                0.45f,    0.60f, 0, //86
                0.45f,    0.65f, 0, //87
                0.35f,    0.65f, 0, //88

                //12 - eyes
                0.38f,   0.635f, 0, //89
                0.42f,   0.635f, 0, //90

                //13 - mouth
                0.4f,     0.61f, 0, //91
                0.39f,    0.62f, 0, //92
                0.4f,     0.61f, 0, //93
                0.41f,    0.62f, 0, //94

                //14 - ZIKO
                -0.65f,   0.65f, 0, //95
                -0.6f,    0.65f, 0, //96
                -0.65f,    0.6f, 0, //97
                -0.6f,     0.6f, 0, //98

                -0.56f,   0.65f, 0, //99
                -0.54f,   0.65f, 0, //100
                -0.55f,   0.65f, 0, //101
                -0.55f,    0.6f, 0, //102
                -0.56f,    0.6f, 0, //103
                -0.54f,    0.6f, 0, //104

                -0.5f,     0.6f, 0, //105
                -0.5f,    0.65f, 0, //106
                -0.5f,    0.63f, 0, //107
                -0.47f,   0.65f, 0, //108
                -0.5f,    0.63f, 0, //109
                -0.47f,    0.6f, 0, //110

                -0.46f,   0.62f, 0, //111
                -0.45f,   0.61f, 0, //112
                -0.43f,   0.61f, 0, //113
                -0.42f,   0.62f, 0, //114
                -0.43f,   0.64f, 0, //115
                -0.45f,   0.64f, 0, //116

                //15 - Comming
                0.58f,    0.35f, 0, //117
                0.55f,    0.35f, 0, //118
                0.55f,     0.3f, 0, //119
                0.58f,     0.3f, 0, //120

                0.6f,     0.35f, 0, //121
                0.6f,      0.3f, 0, //122
                0.65f,     0.3f, 0, //123
                0.65f,    0.35f, 0, //124

                0.68f,     0.3f, 0, //125
                0.68f,    0.35f, 0, //126
                0.7f,     0.33f, 0, //127
                0.72f,    0.35f, 0, //128
                0.72f,     0.3f, 0, //129

                0.74f,     0.3f, 0, //130
                0.74f,    0.35f, 0, //131
                0.76f,    0.33f, 0, //132
                0.78f,    0.35f, 0, //133
                0.78f,     0.3f, 0, //134

                0.79f,    0.35f, 0, //135
                0.81f,    0.35f, 0, //136
                0.8f,     0.35f, 0, //137
                0.8f,      0.3f, 0, //138
                0.79f,     0.3f, 0, //139
                0.81f,     0.3f, 0, //140

                0.83f,     0.3f, 0, //141
                0.83f,    0.35f, 0, //142
                0.85f,     0.3f, 0, //143
                0.85f,    0.35f, 0, //144

                0.9f,     0.33f, 0, //145
                0.9f,     0.35f, 0, //146
                0.87f,    0.35f, 0, //147
                0.87f,     0.3f, 0, //148
                0.9f,      0.3f, 0, //149
                0.9f,     0.32f, 0, //150
                0.89f,    0.32f, 0, //151

                // 16 - Soon
                0.65f,    0.25f, 0, //152
                0.6f,     0.25f, 0, //153
                0.6f,      0.2f, 0, //154
                0.65f,     0.2f, 0, //155
                0.65f,    0.15f, 0, //156
                0.6f,     0.15f, 0, //157

                0.69f,    0.23f, 0, //158
                0.69f,    0.18f, 0, //159
                0.72f,    0.18f, 0, //160
                0.72f,    0.23f, 0, //161

                0.75f,    0.23f, 0, //162
                0.75f,    0.18f, 0, //163
                0.78f,    0.18f, 0, //164
                0.78f,    0.23f, 0, //165

                0.83f,    0.15f, 0, //166
                0.83f,    0.25f, 0, //167
                0.88f,    0.15f, 0, //168
                0.88f,    0.25f, 0  //169
            };
            vertexBufferID = GPU.GenerateBuffer(verts);
        }
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh      = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            mySound = new SoundPlayer(projectPath + "\\Sounds\\ChillingMusic.wav");
            mySound.PlayLooping();

            startScreen    = new Screen("CALLofDUTY.jpg");
            screenTex      = startScreen.GetScreenTexture();
            screenBufferID = GPU.GenerateBuffer(startScreen.GetScreenSquare());
            started        = false;

            float[] skybox = LoadSkybox(projectPath);
            vertexBufferID = GPU.GenerateBuffer(skybox);

            hero        = new Player();
            enemiesList = new List <Enemy>();
            enemiesList.Add(new Enemy());
            enemiesList.Add(new Enemy());
            enemiesList.Add(new Enemy());
            enemiesList.Add(new Enemy());
            enemiesList.Add(new Enemy());
            enemiesList.Add(new Enemy());
            bulletsList        = new List <Bullet>();
            ObstaclesColliders = new List <AABoundingBox>();

            //House
            house = new Model3D();
            house.LoadFile(projectPath + "\\ModelFiles\\models\\3DS\\House", 9, "house.obj");
            house.transmatrix = glm.translate(new mat4(1), new vec3(20, 0, -10));
            AABoundingBox box = new AABoundingBox(house.GetCurrentVertices(), ColliderType.Obstacle);

            box.SetCenter(new vec3(20, 0, -10));
            ObstaclesColliders.Add(box);

            //jeep
            jeep = new Model3D();
            jeep.LoadFile(projectPath + "\\ModelFiles\\models\\3DS\\jeep", 10, "jeep1.3ds");
            jeep.scalematrix = glm.scale(new mat4(1), new vec3(0.3f, 0.3f, 0.3f));
            jeep.transmatrix = glm.translate(new mat4(1), new vec3(14, 0, 0));
            jeep.rotmatrix   = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            box = new AABoundingBox(jeep.GetCurrentVertices(), ColliderType.Obstacle);
            box.Scale(new vec3(0.3f, 0.3f, 0.3f));
            box.SetCenter(new vec3(14, 0, 0));
            ObstaclesColliders.Add(box);

            //jeep2
            jeep2 = new Model3D();
            jeep2.LoadFile(projectPath + "\\ModelFiles\\models\\3DS\\jeep", 10, "jeep1.3ds");
            jeep2.scalematrix = glm.scale(new mat4(1), new vec3(0.3f, 0.3f, 0.3f));
            jeep2.transmatrix = glm.translate(new mat4(1), new vec3(26, 0, 0));
            jeep2.rotmatrix   = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            box = new AABoundingBox(jeep2.GetCurrentVertices(), ColliderType.Obstacle);
            box.Scale(new vec3(0.3f, 0.3f, 0.3f));
            box.SetCenter(new vec3(26, 0, 0));
            ObstaclesColliders.Add(box);

            //Weapon
            weaponTex = new Texture(projectPath + "\\Textures\\engineflare1.jpg", 7);
            Weapon    = new Model3D();
            Weapon.LoadFile(projectPath + "\\ModelFiles\\models\\3DS\\M4A4", 11, "m4a1.obj");
            Weapon.scalematrix = glm.scale(new mat4(1), new vec3(0.1f, 0.1f, 0.1f));
            Weapon.transmatrix = glm.translate(new mat4(1), new vec3(hero.camera.GetCameraPosition().x,
                                                                     hero.camera.GetCameraPosition().y - 1.5f,
                                                                     hero.camera.GetCameraPosition().z));
            double angle = glm.atan(hero.camera.GetLookDirection().z, hero.camera.GetLookDirection().x);

            Weapon.rotmatrix = glm.rotate((float)(0.5f * Math.PI), new vec3(0, 1, 0));
            Weapon.rotmatrix = glm.rotate(Weapon.rotmatrix, (float)(-angle), new vec3(0, 1, 0));

            Gl.glClearColor(0, 0, 0.4f, 1);
            //hero.camera = new Camera();
            //hero.camera.Reset(0, 4, 20, 0, 0, 0, 0, 1, 0);

            ProjectionMatrix = hero.camera.GetProjectionMatrix();
            ViewMatrix       = hero.camera.GetViewMatrix();

            transID = Gl.glGetUniformLocation(sh.ID, "trans");
            projID  = Gl.glGetUniformLocation(sh.ID, "projection");
            viewID  = Gl.glGetUniformLocation(sh.ID, "view");

            modelmatrix = glm.scale(new mat4(1), new vec3(1, 1, 1));

            sh.UseShader();

            DataID = Gl.glGetUniformLocation(sh.ID, "data");
            vec2 data = new vec2(5, 50);

            Gl.glUniform2fv(DataID, 1, data.to_array());

            int  LightPositionID = Gl.glGetUniformLocation(sh.ID, "LightPosition_worldspace");
            vec3 lightPosition   = new vec3(100.0f, 55.0f, 48.0f);

            Gl.glUniform3fv(LightPositionID, 1, lightPosition.to_array());
            //setup the ambient light component.
            AmbientLightID = Gl.glGetUniformLocation(sh.ID, "ambientLight");
            vec3 ambientLight = new vec3(1.5f, 1.3f, 1.3f);

            Gl.glUniform3fv(AmbientLightID, 1, ambientLight.to_array());
            //setup the eye position.
            EyePositionID = Gl.glGetUniformLocation(sh.ID, "EyePosition_worldspace");
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);
        }
Exemple #17
0
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh            = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");
            d             = new Texture(projectPath + "\\Textures\\skybox\\bottom.jpg", 1, true);
            u             = new Texture(projectPath + "\\Textures\\skybox\\top.jpg", 2, true);
            l             = new Texture(projectPath + "\\Textures\\skybox\\left.jpg", 3, true);
            r             = new Texture(projectPath + "\\Textures\\skybox\\right.jpg", 4, true);
            f             = new Texture(projectPath + "\\Textures\\skybox\\front.jpg", 5, true);
            b             = new Texture(projectPath + "\\Textures\\skybox\\back.jpg", 6, true);
            groundTexture = new Texture(projectPath + "\\Textures\\ground.jpg", 7, true);
            shoot         = new Texture(projectPath + "\\Textures\\gunshot.png", 8, true);
            cam           = new Camera();
            cam.Reset(0, 34, 55, 0, 0, 0, 0, 1, 0);

            float[] square =
            {
                -1, 0,  1, 1, 0, 0, 0, 0,
                1,  0,  1, 1, 0, 0, 1, 0,
                -1, 0, -1, 1, 0, 0, 0, 1,

                1,  0,  1, 1, 0, 0, 1, 0,
                -1, 0, -1, 1, 0, 0, 0, 1,
                1,  0, -1, 1, 0, 0, 1, 1
            };
            skyboxBuffer_ID = GPU.GenerateBuffer(square);

            up = MathHelper.MultiplyMatrices(new List <mat4> {
                glm.rotate(3.1412f, new vec3(1, 0, 0)),
                glm.translate(new mat4(1), new vec3(0, 1, 0))
            });

            down = glm.translate(new mat4(1), new vec3(0, -1, 0));
            // Dclare Matrices For transformation edges
            front = MathHelper.MultiplyMatrices(new List <mat4> {
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, -1))
            });
            left = MathHelper.MultiplyMatrices(new List <mat4> {
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(-1, 0, 0))
            });
            back = MathHelper.MultiplyMatrices(new List <mat4> {
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.rotate(3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, 1))
            });
            right = MathHelper.MultiplyMatrices(new List <mat4> {
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.rotate(-90.0f / 180.0f * 3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(1, 0, 0))
            });

            ground = MathHelper.MultiplyMatrices(new List <mat4>
            {
                glm.scale(new mat4(1), new vec3(6000, 6000, 6000)),
                glm.translate(new mat4(1), new vec3(0, -45, 0))
            });
            building = new Model3D();
            building.LoadFile(projectPath + "\\ModelFiles\\static\\building", 1, "Building 02.obj");
            building.scalematrix = glm.scale(new mat4(1), new vec3(30, 30, 30));
            building.transmatrix = glm.translate(new mat4(1), new vec3(1, 1, 1));

            car = new Model3D();
            car.LoadFile(projectPath + "\\ModelFiles\\static\\car", 3, "dpv.obj");
            car.scalematrix = glm.scale(new mat4(1), new vec3(0.15f, 0.25f, 0.15f));
            car.transmatrix = glm.translate(new mat4(1), new vec3(-150, -45.0f, 0.5f));
            car.rotmatrix   = glm.rotate(3.1412f, new vec3(0, 1, 0));

            tree = new Model3D();
            tree.LoadFile(projectPath + "\\ModelFiles\\static\\tree", 2, "Tree.obj");
            tree.scalematrix = glm.scale(new mat4(1), new vec3(50, 50, 50));
            tree.transmatrix = glm.translate(new mat4(1), new vec3(-240, -45.0f, 0.5f));
            tree.rotmatrix   = glm.rotate(3.1412f, new vec3(0, 1, 0));

            Blade = new md2(projectPath + "\\ModelFiles\\animated\\md2\\blade\\Blade.md2");
            Blade.StartAnimation(animType.STAND);
            Blade.rotationMatrix    = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            Blade.scaleMatrix       = glm.scale(new mat4(1), new vec3(0.8f, 0.8f, 0.8f));
            Blade.TranslationMatrix = glm.translate(new mat4(1), new vec3(20, 19, -20));

            zombie = new md2LOL(projectPath + "\\ModelFiles\\animated\\md2LOL\\zombie.md2");
            zombie.StartAnimation(animType_LOL.STAND);
            zombie.rotationMatrix = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            zombie.scaleMatrix    = glm.scale(new mat4(1), new vec3(0.8f, 0.8f, 0.8f));


            spider = new Model3D();
            spider.LoadFile(projectPath + "\\ModelFiles\\static\\spider", 4, "spider.obj");
            spider.transmatrix = glm.translate(new mat4(1), new vec3(240, 0.0f, 0));
            spider.rotmatrix   = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(0, 1, 0));

            HandsWGun = new Model3D();
            HandsWGun.LoadFile(projectPath + "\\ModelFiles\\hands with gun", 8, "gun.obj");
            HandsWGun.scalematrix = glm.scale(new mat4(1), new vec3(0.2f, 0.2f, 0.2f));

            bulletModel = new Model3D();
            bulletModel.LoadFile(projectPath + "\\ModelFiles\\static\\bullet", 8, "bullet.obj");


            sh.UseShader();
            Gl.glClearColor(0, 0, 0.4f, 1);



            ProjectionMatrix = cam.GetProjectionMatrix();
            ViewMatrix       = cam.GetViewMatrix();

            modelID = Gl.glGetUniformLocation(sh.ID, "model");
            projID  = Gl.glGetUniformLocation(sh.ID, "projection");
            viewID  = Gl.glGetUniformLocation(sh.ID, "view");

            sh.UseShader();

            c = timer;
        }
Exemple #18
0
        public void Initialize()
        {
            string projectPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

            sh = new Shader(projectPath + "\\Shaders\\SimpleVertexShader.vertexshader", projectPath + "\\Shaders\\SimpleFragmentShader.fragmentshader");

            tex   = new Texture(projectPath + "\\Textures\\crate.jpg", 0);
            down  = new Texture(projectPath + "\\Textures\\down.jpg", 1);
            right = new Texture(projectPath + "\\Textures\\right.jpg", 2);
            left  = new Texture(projectPath + "\\Textures\\left.jpg", 3);
            up    = new Texture(projectPath + "\\Textures\\up.jpg", 4);
            front = new Texture(projectPath + "\\Textures\\front.jpg", 5);
            back  = new Texture(projectPath + "\\Textures\\back.jpg", 6);
            tex1  = new Texture(projectPath + "\\Textures\\Ground.jpg", 2);

            m = new md2LOL(projectPath + "\\ModelFiles\\zombie.md2");
            m.StartAnimation(animType_LOL.RUN);
            m.rotationMatrix    = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            m.scaleMatrix       = glm.scale(new mat4(1), new vec3(0.0093f, 0.0093f, 0.0093f));
            m.TranslationMatrix = glm.translate(new mat4(1), new vec3(0, -2, 5));
            ////define normal for each vertex
            m2 = new md2LOL(projectPath + "\\ModelFiles\\wolf.md2");
            m2.StartAnimation(animType_LOL.ATTACK1);
            m2.rotationMatrix    = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));
            m2.scaleMatrix       = glm.scale(new mat4(1), new vec3(0.008f, 0.008f, 0.008f));
            m2.TranslationMatrix = glm.translate(new mat4(1), new vec3(-2, -2, 5));


            Gl.glClearColor(0, 0, 0, 1);
            float ground = 1;


            float[] skybox =
            {
                -ground, -ground, -ground, 0, 0,
                ground,  -ground, -ground, 1, 0,
                ground,  ground,  -ground, 1, 1,

                -ground, -ground, -ground, 0, 0,
                -ground, ground,  -ground, 0, 1,
                ground,  ground,  -ground, 1, 1
            };
            float[] verts =
            {
                -1.0f, -1.0f, 0.0f,

                0,         0,
                1.0f,  -1.0f, 0.0f,

                1,         0,
                0.0f,   1.0f, 0.0f,

                0.5f, 1
            };

            vertexBufferID  = GPU.GenerateBuffer(skybox);
            vertexBufferID2 = GPU.GenerateBuffer(verts);

            scaleMat = glm.scale(new mat4(1), new vec3(200f, 200f, 200f));

            cam = new Camera();

            ProjectionMatrix = cam.GetProjectionMatrix();
            ViewMatrix       = cam.GetViewMatrix();
            transID          = Gl.glGetUniformLocation(sh.ID, "model");
            projID           = Gl.glGetUniformLocation(sh.ID, "projection");
            viewID           = Gl.glGetUniformLocation(sh.ID, "view");

            leftmatrix = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.rotate(90.0f / 180.0f * 3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, 0)),
                scaleMat
            });

            rightmatrix = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.rotate(270f / 180.0f * 3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, 0)),
                scaleMat
            });

            upmatrix = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.rotate(90 / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, 0)),
                scaleMat
            });

            backmatrix = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.rotate(180f / 180f * 3.1412f, new vec3(0, 1, 0)),
                glm.translate(new mat4(1), new vec3(0, 0, 0)),
                scaleMat
            });

            groundmatrix = MathHelper.MultiplyMatrices(new List <mat4>()
            {
                glm.rotate(90f / 180.0f * 3.1412f, new vec3(1, 0, 0)),
                glm.translate(new mat4(1), new vec3(0, -2, 0)),
                scaleMat
            });

            //Gl.glClearColor(0, 0, 0.4f, 1);

            //cam = new Camera();
            cam.Reset(0, -1.75f, 0, 0, 0, 0, 0, 0, 0);

            ProjectionMatrix = cam.GetProjectionMatrix();
            ViewMatrix       = cam.GetViewMatrix();



            modelmatrix = glm.scale(new mat4(1), new vec3(50, 50, 50));

            tree = new Model3D();
            tree.LoadFile(projectPath + "\\ModelFiles\\tree", 6, "Tree.obj");
            tree.scalematrix = glm.scale(new mat4(1), new vec3(0.1f, 0.1f, 0.1f));
            tree.transmatrix = glm.translate(new mat4(1), new vec3(0.6f, -2, 0.4f));

            //tree2 = new Model3D();
            //tree2.LoadFile(projectPath + "\\ModelFiles\\Tree1", 6, "Tree1.obj");
            //tree2.scalematrix = glm.scale(new mat4(1), new vec3(30, 30, 30));

            treee3 = new Model3D();
            treee3.LoadFile(projectPath + "\\ModelFiles\\Wolf Rigged and Game Ready", 6, "Wolf.fbx");
            treee3.scalematrix = glm.scale(new mat4(1), new vec3(0.1f, 0.1f, 0.1f));
            treee3.transmatrix = glm.translate(new mat4(1), new vec3(-0.6f, -2, 0.4f));
            treee3.rotmatrix   = glm.rotate((float)((-180.0f / 180) * Math.PI), new vec3(1, 0, 0));


            //car = new Model3D();
            //car.LoadFile(projectPath + "\\ModelFiles\\car", 6, "dpv.obj");
            //car.scalematrix = glm.scale(new mat4(1), new vec3(15, 1, 15));

            cottage = new Model3D();
            cottage.LoadFile(projectPath + "\\ModelFiles\\House", 6, "house.obj");
            cottage.scalematrix = glm.scale(new mat4(1), new vec3(0.1f, 0.1f, 0.1f));

            cottage.transmatrix = glm.translate(new mat4(1), new vec3(-0.6f, -2f, 0.4f));

            jeep = new Model3D();
            jeep.LoadFile(projectPath + "\\ModelFiles\\jeep", 9, "jeep1.3ds");
            jeep.scalematrix = glm.scale(new mat4(1), new vec3(0.05f, 0.05f,
                                                               0.05f));
            jeep.transmatrix = glm.translate(new mat4(1), new vec3(1f, -2f, 1f));
            jeep.rotmatrix   = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));

            //jeep2 = new Model3D();
            //jeep2.LoadFile(projectPath + "\\ModelFiles\\jeep", 10, "jeep1.3ds");
            //jeep2.scalematrix = glm.scale(new mat4(1), new vec3(5, 5, 5));
            //jeep2.transmatrix = glm.translate(new mat4(1), new vec3(-80, 1, 180));
            //jeep2.rotmatrix = glm.rotate((float)((-90.0f / 180) * Math.PI), new vec3(1, 0, 0));

            //get location of specular and attenuation then send their values
            //get location of light position and send its value
            //setup the ambient light component.
            //setup the eye position.

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glDepthFunc(Gl.GL_LESS);
        }