zNear = -zNear;
zFar = -zFar;
Eigen::Matrix4f projection = Eigen::Matrix4f::Identity();
projection = Eigen::Matrix4f::Zero();
eye_fov = eye_fov / 180 * MY_PI;
projection(0,0) = zNear;
projection(1,1) = zNear;
projection(2,2) = zNear + zFar;
projection(2,3) = -zNear * zFar;
projection(3,2) = 1.0;
projection(3,3) = 0.0;
Eigen::Matrix4f ort = Eigen::Matrix4f::Identity();;
float t = tan(eye_fov / 2) * abs(zNear);
float r = t * aspect_ratio;
ort(0,0) = 1.0 / r;
ort(1,1) = 1.0 / t;
ort(2,2) = 2.0 / (zFar – zNear);
ort(2,3) = (zNear + zFar) / 2;
projection = ort * projection;
return projection;