我使用glm::ortho
投影渲染场景。我希望渲染包括我绘制的每个顶点而不添加不必要的深度(即具有最小深度缓冲区分辨率影响)。
我已经看过this关于透视投影的类似问题的帖子,但我正在寻找正投影中的近剪裁平面值和远剪裁平面值。
我可以使用viewMatrix计算每个顶点的z值,将顶点转换为屏幕坐标。在伪代码中:
float near;
float far;
for (each glm::vec4 vertex)
{
glm::vec4 trans = viewMatrix * vertex;
// invert for z-buffer
trans.z = -trans.z;
if (trans.z < near)
near = trans.z;
if (trans.z > far)
far = trans.z;
}
这样,near
和far
分别代表屏幕坐标中最近和最远顶点的z值。
但是当我在zNear
矩阵中将这些值用作zFar
和glm::ortho
时,大部分渲染仍然会被剪裁。我错过了什么?