gluPerspective参数 - 它们是什么意思?

时间:2013-05-15 18:02:49

标签: opengl perspective perspectivecamera

我想知道gluPerspective参数。

在所有示例中,我看到fovy设置为大约45-60度 我试图将它设置为不同的值,对象就消失了 它的解释是什么?

aspect值应始终为比率?为什么会改变它?

zNear, zFar - 通常的值大约在10和500以上,它反映了什么?

1 个答案:

答案 0 :(得分:77)

4个参数的目的是定义 view frustum ,如下所示:

perspective frustum

在屏幕上看不到平截头体外的任何东西(为了实现这一点,参数用于计算4x4矩阵,然后用于将每个顶点转换为所谓的剪辑空间。在那里,测试是否一个顶点在平截头体内部或不是平凡的)

视野参数基本上是通过摄像机位置的平面与屏幕顶部之间的角度。另一架飞机穿过摄像机位置和屏幕底部。这个角度越大,你对世界的看法就越多 - 但与此同时,你能看到的物体会变小。

为了观察它的影响,我建议编写一个简单的应用程序,你可以通过按键逐渐增加/减少fov - 然后渲染一些球体或其他基本物体&看看你改变它会发生什么。

宽高比是您的视口宽高比。 (在上图中,视口位于近剪裁平面)由于视口的宽高比可能不同,因此可以随意定义视口。

zNear& zFar 值定义摄像机位置和放大器之间的距离。分别是近和远剪裁平面。没有比zFar更接近相机的东西比zFar更近或更远。两个值都必须> 0,显然,zFar> zNear。 理想情况下,应选择zFar,以便您想要渲染的所有内容都可见,但要使其大于必要的浪费深度缓冲区预测和&可能导致闪烁效应,称为z-fighting。同样,将zNear设置得太靠近相机可能会产生相同的效果 - 事实上,具有合理的zNear值比zFar更重要。如果您想确切知道为什么会发生这种情况,您应该阅读一些深入的解释,例如this onethis one