我想知道gluPerspective
参数。
在所有示例中,我看到fovy
设置为大约45-60度
我试图将它设置为不同的值,对象就消失了
它的解释是什么?
aspect
值应始终为比率?为什么会改变它?
zNear, zFar
- 通常的值大约在10和500以上,它反映了什么?
答案 0 :(得分:77)
4个参数的目的是定义 view frustum ,如下所示:
在屏幕上看不到平截头体外的任何东西(为了实现这一点,参数用于计算4x4矩阵,然后用于将每个顶点转换为所谓的剪辑空间。在那里,测试是否一个顶点在平截头体内部或不是平凡的)
视野参数基本上是通过摄像机位置的平面与屏幕顶部之间的角度。另一架飞机穿过摄像机位置和屏幕底部。这个角度越大,你对世界的看法就越多 - 但与此同时,你能看到的物体会变小。
为了观察它的影响,我建议编写一个简单的应用程序,你可以通过按键逐渐增加/减少fov - 然后渲染一些球体或其他基本物体&看看你改变它会发生什么。
宽高比是您的视口宽高比。 (在上图中,视口位于近剪裁平面)由于视口的宽高比可能不同,因此可以随意定义视口。
zNear& zFar 值定义摄像机位置和放大器之间的距离。分别是近和远剪裁平面。没有比zFar更接近相机的东西比zFar更近或更远。两个值都必须> 0,显然,zFar> zNear。 理想情况下,应选择zFar,以便您想要渲染的所有内容都可见,但要使其大于必要的浪费深度缓冲区预测和&可能导致闪烁效应,称为z-fighting。同样,将zNear设置得太靠近相机可能会产生相同的效果 - 事实上,具有合理的zNear值比zFar更重要。如果您想确切知道为什么会发生这种情况,您应该阅读一些深入的解释,例如this one或this one