public void Setup ()
		{
			program = new GLProgram ("Shader", "Shader");

			program.AddAttribute ("position");
			program.AddAttribute ("textureCoordinate");
			program.AddAttribute ("normalsAttribute");

			if (!program.Link ()) {
				Console.WriteLine ("Link failed.");
				Console.WriteLine (String.Format ("Program Log: {0}", program.ProgramLog ()));
				Console.WriteLine (String.Format ("Fragment Log: {0}", program.FragmentShaderLog ()));
				Console.WriteLine (String.Format ("Vertex Log: {0}", program.VertexShaderLog ()));

				(View as GLView).StopAnimation ();
				program = null;

				return;
			}

			positionAttribute = program.GetAttributeIndex ("position");
			textureCoordinateAttribute = program.GetAttributeIndex ("textureCoordinate");
			normalsAttribute = program.GetAttributeIndex ("normalsAttribute");

			matrixUniform = program.GetUniformIndex ("matrix");
			textureUniform = program.GetUniformIndex ("texture");
			lightDirectionUniform = program.GetUniformIndex ("lightDirection");
			lightDiffuseColorUniform = program.GetUniformIndex ("lightDiffuseColor");

			GL.Enable (EnableCap.DepthTest);
			GL.Enable (EnableCap.CullFace);
			GL.Enable (EnableCap.Texture2D);
			GL.Enable (EnableCap.Blend);
			GL.BlendFunc (BlendingFactorSrc.One, BlendingFactorDest.Zero);

			texture = new GLTexture ("DieTexture.png");
		}