0

我需要在 opengl 代码中传递 glPerspective 中的近值和远值。通过与顶点着色器中的 ModelViewMatrix 相乘,我得到了眼睛空间中的所有顶点。我的问题是,我需要从中找到最小值和最大值,以便可以将该值传递给 glPerspective。我该怎么做?我是否需要在顶点着色器或客户空间(C 代码)中计算它们?

4

1 回答 1

0

near 和 far 通常不计算,而只是设置为合理的值。'near' 应该足够近,以至于附近的物体不会被剪裁,但不能太近以至于所有 z 缓冲区精度都消失了。'far' 只需要足够远,就可以渲染任何你想要渲染的东西。

在任何情况下,顶点着色器都不是计算它们的最佳位置,因为矩阵会被传递到着色器,所以在你走得那么远之前你需要知道这些值。

(对于需要高精度的阴影等动态计算近/远可能是可行/有用的 - 在这种情况下,它基于要渲染的对象的边界体积或其他一些类似的近似值)。

于 2012-12-15T21:43:09.330 回答