我似乎有同样的问题提到here(搜索“why are my spheres distorted when they get near the edge of the window?
”,因为有很多不相关的讨论)。该链接的解决方案是将FOV大幅降低到10,这似乎使我的场景在z方向上非常浅。有人提到宽高比可能会关闭,但我不太确定:
gluPerspective(60, (GLfloat)width / (GLfloat)height, 1, -200);
无论如何,在60的FOV,我的场景看起来像这样:
将其更改为45会有所帮助,但球体在边缘附近看起来仍然会变形。为什么是这样?这种扭曲是不可避免的吗?
答案 0 :(得分:2)
这是为什么?
这是仿射透视投影的工作方式。
这种扭曲是不可避免的吗?
在仿射投射的情况下是。
但是,使用顶点着色器可以实现基于角度的投影。然而,那些需要充分地测试几何形状。必须拆除长直线边缘(如背景框的边缘)。 tesselation着色器可以提供帮助。另一种方法是在立方体贴图中渲染5个90°FOV的二次视图,然后从该立方体贴图中绘制一个角度投影。