示例#1
0
        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);
        }
示例#2
0
文件: Model.cs 项目: mrenow/2D-Game
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
 public Model(VAO vao, BeginMode drawmode)
 {
     this.vao      = vao;
     this.drawmode = drawmode;
 }
示例#6
0
文件: Model.cs 项目: mrenow/2D-Game
 public Model(VAO vao, BeginMode drawmode, Vector2 size)
 {
     this.vao      = vao;
     this.drawmode = drawmode;
     this.size     = size;
 }