public static void Init(float[,] heights) { var vertices = new List <Vector3>(); var elements = new List <int>(); var colours = new List <Color4>(); for (int i = 0; i < heights.GetLength(0); i++) { for (int j = 0; j < heights.GetLength(1); j++) { float x = i - (float)heights.GetLength(0) / 2; float y = j - (float)heights.GetLength(1) / 2; float z = heights[i, j]; vertices.Add(new Vector3(x, y, z)); colours.Add(new Color4((float)Math.Sin(i) / 2, 0.2f, 0.5f, 1)); } } for (int i = 0; i < heights.GetLength(0) - 1; i++) { for (int j = 0; j < heights.GetLength(1) - 1; j++) { int topleft = i * heights.GetLength(1) + j; int topright = topleft + 1; int bottomleft = (i + 1) * heights.GetLength(1) + j; int bottomright = bottomleft + 1; elements.AddRange(new int[] { topleft, bottomleft, topright, topright, bottomleft, bottomright }); } } VAO vao = new VAO(vertices.ToArray(), colours.ToArray(), elements.ToArray()); model = new Model(vao, BeginMode.Triangles); }
public static Model CreateRectangle(Vector2 size, Vector4[] colours) { Vector2[] vertices = new Vector2[] { new Vector2(-1, 1), new Vector2(-1, -1), new Vector2(1, -1), new Vector2(1, 1) }; int[] elements = new int[] { 0, 1, 2, 0, 3 }; VAO vao = new VAO(vertices, colours, elements); return(new Model(vao, BeginMode.TriangleStrip, size)); }
public static Model CreateRectangle(Color4[] colours) { Debug.Assert(colours.Length == 4); Vector3[] vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0) }; int[] elements = new int[] { 0, 1, 2, 2, 3, 0 }; VAO vao = new VAO(vertices, colours, elements); return(new Model(vao, BeginMode.Triangles)); }
public static Model CreateCube(Color4[] colours) { Debug.Assert(colours.Length == 8); Vector3[] vertices = new Vector3[] { new Vector3(-1.0f, -1.0f, 1.0f), new Vector3(1.0f, -1.0f, 1.0f), new Vector3(1.0f, 1.0f, 1.0f), new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(-1.0f, -1.0f, -1.0f), new Vector3(1.0f, -1.0f, -1.0f), new Vector3(1.0f, 1.0f, -1.0f), new Vector3(-1.0f, 1.0f, -1.0f) }; int[] elements = new int[] { 0, 1, 2, 2, 3, 0, 1, 5, 6, 6, 2, 1, 7, 6, 5, 5, 4, 7, 4, 0, 3, 3, 7, 4, 4, 5, 1, 1, 0, 4, 3, 2, 6, 6, 7, 3 }; VAO vao = new VAO(vertices, colours, elements); return(new Model(vao, BeginMode.Triangles)); }
public Model(VAO vao, BeginMode drawmode) { this.vao = vao; this.drawmode = drawmode; }
public Model(VAO vao, BeginMode drawmode, Vector2 size) { this.vao = vao; this.drawmode = drawmode; this.size = size; }