private Matrix4f getProjectionNormalized(int w, int h) { // range -1,1 in the narrow axis at z = 0. Matrix4f m1 = new Matrix4f(); Matrix4f m2 = new Matrix4f(); if (w > h) { float aspect = ((float) w) / h; m1.loadFrustum(-aspect, aspect, -1, 1, 1, 100); } else { float aspect = ((float) h) / w; m1.loadFrustum(-1, 1, -aspect, aspect, 1, 100); } m2.loadRotate(180, 0, 1, 0); m1.loadMultiply(m1, m2); m2.loadScale(-1, 1, 1); m1.loadMultiply(m1, m2); m2.loadTranslate(0, 0, 1); m1.loadMultiply(m1, m2); return m1; }