public static void Load()
        {
            TextureMap.Initialise();

            string[] cubeObject = new string[]
            {
                "v -1.0 -1.00  1.0\n",
                "v -1.0  1.00  1.0\n",
                "v -1.0 -1.00 -1.0\n",
                "v -1.0  1.00 -1.0\n",
                "v  1.0 -1.00  1.0\n",
                "v  1.0  1.00  1.0\n",
                "v  1.0 -1.00 -1.0\n",
                "v  1.0  1.00 -1.0\n",
                "\n",
                "vt -2.0 0.0\n",
                "vt -1.0 1.0\n",
                "vt -2.0 1.0\n",
                "vt -1.0 0.0\n",
                "vt 0.0  1.0\n",
                "vt 0.0  0.0\n",
                "vt 1.0  1.0\n",
                "vt 1.0  0.0\n",
                "vt 2.0  1.0\n",
                "vt 1.0  2.0\n",
                "vt 0.0  2.0\n",
                "vt 0.0 -1.0\n",
                "vt 2.0  0.0\n",
                "vt 1.0 -1.0\n",
                "\n",
                "s off\n",
                "f 2/1 3/2 1/3\n",
                "f 4/4 7/5 3/2\n",
                "f 8/6 5/7 7/5\n",
                "f 6/8 1/9 5/7\n",
                "f 7/5 1/10 3/11\n",
                "f 4/12 6/8 8/6\n",
                "f 2/1 4/4 3/2\n",
                "f 4/4 8/6 7/5\n",
                "f 8/6 6/8 5/7\n",
                "f 6/8 2/13 1/9\n",
                "f 7/5 5/7 1/10\n",
                "f 4/12 2/14 6/8\n"
            };

            string[] quadObject = new string[]
            {
                "v 1 1 0\n",
                "v -1 1 0\n",
                "v -1 -1 0\n",
                "v 1 -1 0\n",
                "\n",
                "vt 1 1 0\n",
                "vt 0 1 0\n",
                "vt 0 0 0\n",
                "vt 1 0 0\n",
                "\n",
                "f 1/1 2/2 3/3\n",
                "f 1/1 3/3 4/4\n"
            };

            Cube = new Mesh(cubeObject);
            Quad = new Mesh(quadObject);

            string textureV =
                "#version 460\n" +
                "uniform mat4 mvp;\n" +
                "uniform mat4 mv;\n" +
                "in vec3 in_pos;\n" +
                "in vec2 in_uv;\n" +
                "in vec3 in_normal;\n" +
                "out vec2 ex_uv;\n" +
                "out vec3 ex_normal;\n" +
                "void main() {\n" +
                "  gl_Position = mvp * vec4(in_pos, 1.0);\n" +
                "  ex_uv = in_uv;\n" +
                "  ex_normal = normalize((mv * vec4(in_normal, 0.0)).xyz);\n" +
                "}\n";

            string textureF =
                "#version 460\n" +
                "precision highp float;\n" +
                "#define LIGHT vec3(0.36, 0.80, 0.48)\n" +
                "uniform sampler2D tex;\n" +
                "in vec2 ex_uv;\n" +
                "in vec3 ex_normal;\n" +
                "void main() {\n" +
                "  float s = dot(ex_normal, LIGHT)*0.5 + 0.5;\n" +
                "  gl_FragColor = vec4(texture(tex, ex_uv).rgb * s, 1.0);\n" +
                "}\n";


            TextureShader = new Shader(textureV, textureF);

            string vertexShader =
                "#version 330\n" +
                "uniform mat4 mvp;\n" +
                "in vec3 in_pos;\n" +
                "void main() { gl_Position = mvp * vec4(in_pos, 1.0); }\n";


            string fragmentShader =
                "#version 330\n" +
                "void main() { gl_FragColor = vec4(0.8, 0.2, 1.0, 1.0); }\n";

            PinkShader = new Shader(vertexShader, fragmentShader);
        }