透視行列の遠面距離を に定義すると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;
}