private static void _CameraUpdateForIntrinsics(Camera cam, TangoCameraIntrinsics intrinsics, float uOffset,
float vOffset)
{
float cx = (float)intrinsics.cx;
float cy = (float)intrinsics.cy;
float width = (float)intrinsics.width;
float height = (float)intrinsics.height;
float xscale = cam.nearClipPlane / (float)intrinsics.fx;
float yscale = cam.nearClipPlane / (float)intrinsics.fy;
float pixelLeft = -cx + (uOffset * width);
float pixelRight = width - cx - (uOffset * width);
// OpenGL coordinates has y pointing downwards so we negate this term.
float pixelBottom = -height + cy + (vOffset * height);
float pixelTop = cy - (vOffset * height);
cam.projectionMatrix = _Frustum(pixelLeft * xscale, pixelRight * xscale,
pixelBottom * yscale, pixelTop * yscale,
cam.nearClipPlane, cam.farClipPlane);
}