我试图根据用户的位置实现场景的 3D 透视。当用户不从轴上看时,我读到了不对称截锥体方法来实现失真。
我用来做离轴投影的代码是:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumNear, frustumFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, headZ);
drawWalls();
当用户查看轴时,场景被绘制为:
当截锥体偏离轴时,场景被绘制为:
然而,我期望的结果有点像下图(通过使用 gluLookAt 和不对称截头锥实现)。
对于上述程序,我仅使用不对称平截头体来指定查看体积,并且更改参数(第二张图像)仅使场景看起来有点平移(无失真)。我想知道这是否是正确的行为,或者我是否错过了某些东西并且没有在场景中得到应该存在的失真(如第三张图像)。不应该只用倾斜的截锥体给我扭曲的场景输出吗?