public void onFovChanged( final HeadMountedDisplay hmd, final FieldOfView leftFov, final FieldOfView rightFov, final float virtualEyeToScreenDistance) { if (this.mDrawingFrame) { throw new IllegalStateException("Cannot change FOV while rendering a frame."); } this.mHmd = new HeadMountedDisplay(hmd); this.mLeftEyeViewport = this.initViewportForEye(leftFov, 0.0f); this.mRightEyeViewport = this.initViewportForEye(rightFov, this.mLeftEyeViewport.width); this.mMetersPerTanAngle = virtualEyeToScreenDistance; final ScreenParams screen = this.mHmd.getScreenParams(); this.mXPxPerTanAngle = screen.getWidth() / (screen.getWidthMeters() / this.mMetersPerTanAngle); this.mYPxPerTanAngle = screen.getHeight() / (screen.getHeightMeters() / this.mMetersPerTanAngle); this.mFovsChanged = true; this.mViewportsChanged = true; }