我发现如果我将透视矩阵的远平面距离定义为1,000,000,000
,那么该范围内的所有对象都会被剪裁。工作范围100,000,000
很好。任何人都可以解释这个吗?我的意思是,它仍然不近似浮点数最大范围。还是我错了?为了计算透视,我使用 GLM 库。没有固定的管道僵硬。
更新:(JAVA)透视矩阵计算:
public static Mat4 perspective(float fovy, float aspect, float zNear, float zFar) {
float range = (float) (Math.tan(Math.toRadians(fovy / 2.0f)) * zNear);
float left = -range * aspect;
float right = range * aspect;
float bottom = -range;
float top = range;
Mat4 res = new Mat4(0.0f);
res.matrix[0] = (2.0f * zNear) / (right - left);
res.matrix[5] = (2.0f * zNear) / (top - bottom);
res.matrix[10] = -(zFar + zNear) / (zFar - zNear);
res.matrix[11] = -1.0f;
res.matrix[14] = -(2.0f * zFar * zNear) / (zFar - zNear);
return res;
}