Cubeface getOneCubeface(int face) {
		Matrix4f localMatrix = (Matrix4f) new Matrix4f().setIdentity();
		switch(face) {
			case Cube.TOP:
				localMatrix.rotate((float) Math.toRadians(-90), new Vector3f(1, 0, 0));
				break;
			case Cube.FRONT:
				break;
			case Cube.LEFT:
				localMatrix.rotate((float) Math.toRadians(-90), new Vector3f(0, 1, 0));
				break;
			case Cube.BOTTOM:
				localMatrix.rotate((float) Math.toRadians(90), new Vector3f(1, 0, 0));
				break;
			case Cube.BACK:
				localMatrix.rotate((float) Math.toRadians(180), new Vector3f(0, 1, 0));
				break;
			case Cube.RIGHT:
				localMatrix.rotate((float) Math.toRadians(90), new Vector3f(0, 1, 0));
				break;
			default:
				return null;
		}
		Matrix4f faceMatrix = Matrix4f.mul(transformation, localMatrix, null);
		Vector4f bl = Matrix4f.transform(faceMatrix, new Vector4f(-0.5f, -0.5f, 0.5f, 1f), null);
		Vector4f br = Matrix4f.transform(faceMatrix, new Vector4f(0.5f, -0.5f, 0.5f, 1f), null);
		Vector4f tr = Matrix4f.transform(faceMatrix, new Vector4f(0.5f, 0.5f, 0.5f, 1f), null);
		Vector4f tl = Matrix4f.transform(faceMatrix, new Vector4f(-0.5f, 0.5f, 0.5f, 1f), null);

		Cubeface cf = new Cubeface(turnedFaces[face], face,
				new Vector3f(tl.x / tl.w, tl.y / tl.w, tl.z / tl.w),
				new Vector3f(tr.x / tr.w, tr.y / tr.w, tr.z / tr.w),
				new Vector3f(bl.x / bl.w, bl.y / bl.w, bl.z / bl.w),
				new Vector3f(br.x / br.w, br.y / br.w, br.z / br.w)
		);

		return cf;
	}