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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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; }
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); }