private GLObject MakeObject(Image img)
        {
            int width = img.Width;
            int height = img.Height;
            int stride = 4;
            Vector2[] vertices = MakePlane(width, height, width /2, height / 2);
            float[] data = new float[vertices.Length * stride];

            for (int i = 0; i < vertices.Length; i++)
            {
                int j = i * stride;
                Vector2 v = vertices[i];

                // X / Z
                data[j] = v.X;
                data[j+1] = v.Y;

                // U / V
                data[j + 2] = v.X / width;
                data[j + 3] = -v.Y / height;
            }

            Matrix4 model = Matrix4.Identity;//Matrix4.CreateRotationX(3.41f);
            camera = Matrix4.LookAt(new Vector3(700, 700, -400), new Vector3(600, 0, -300), new Vector3(0, 1, 0));
            Matrix4 proj = Matrix4.CreatePerspectiveFieldOfView(3.41f / 4, Width / (float)Height, 0.1f, 10000);

            // Calc shader
            ShaderProgram program = new ShaderProgram();
            program.AddShader(new Shader(ShaderType.VertexShader, Helper.LoadShader("Shaders/picture.vert")));
            program.AddShader(new Shader(ShaderType.FragmentShader, Helper.LoadShader("Shaders/picture.frag")));

            if (!program.Compile())
            {
                throw new Exception(program.Log);
            }

            program.UniformMatrix4("model", false, ref model);
            program.UniformMatrix4("view", false, ref camera);
            program.UniformMatrix4("projection", false, ref proj);

            Texture image = new Texture(img, TextureTarget.Texture2D, PixelInternalFormat.Rgb, 0);
            image.TexParameter(TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            image.TexParameter(TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
            image.TexParameter(TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat);
            image.TexParameter(TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat);

            // Make instance
            GLObject obj = new GLObject(data, new List<PartitionRule>()
            {
                new PartitionRule("position", 0, 2),
                new PartitionRule("texcoord", 2, 2)
            }, program);

            obj.AddTexture("image", image);
            return obj;
        }