public static IBuffer<float> CreateVertexBuffer(ICollection<Point> points, ref BoundingBox bounds)
        {
            var buffer = new VertexBuffer(2 * points.Count);

            bounds.Reset();

            var data = buffer.Data;

            float x, y;

            int i = 0;

            foreach (var p in points)
            {
                x = (float)p.X;
                y = (float)p.Y;

                data[2 * i] = x;
                data[2 * i + 1] = y;

                bounds.Update(x, y);

                i++;
            }

            return buffer as IBuffer<float>;
        }
        public static IBuffer<float> CreateVertexBuffer(double[] points, ref BoundingBox bounds)
        {
            int length = points.Length;

            var buffer = new VertexBuffer(length);

            bounds.Reset();

            var data = buffer.Data;

            float x, y;

            length = length >> 1;

            for (int i = 0; i < length; i++)
            {
                x = (float)points[2 * i];
                y = (float)points[2 * i + 1];

                data[2 * i] = x;
                data[2 * i + 1] = y;

                bounds.Update(x, y);
            }

            return buffer as IBuffer<float>;
        }