private void createProgram() {
		shaderProgram = ARBShaderObjects.glCreateProgramObjectARB();

		if(shaderProgram == 0)
			return;
		/*
		* if the vertex and fragment shaders setup sucessfully,
		* attach them to the shader program, link the sahder program
		* (into the GL context I suppose), and validate
		*/
		ARBShaderObjects.glAttachObjectARB(shaderProgram, vertexShader);
		ARBShaderObjects.glAttachObjectARB(shaderProgram, fragmentShader);

		ARBShaderObjects.glLinkProgramARB(shaderProgram);
		if (ARBShaderObjects.glGetObjectParameteriARB(shaderProgram, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
			System.err.println(getLogInfo(shaderProgram));
			return;
		}
 
		ARBShaderObjects.glValidateProgramARB(shaderProgram);
		if (ARBShaderObjects.glGetObjectParameteriARB(shaderProgram, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
			System.err.println(getLogInfo(shaderProgram));
			return;
		}
	}