我在 XZ 平面中绘制了一个椭圆,并将我的视角稍微向上设置在 Y 轴上,然后再回到 Z 轴上,从 45 度角看椭圆的中心,使用 gluPerspective() 设置我的视锥.

c - 在 OpenGL 中围绕视线旋转时如何防止变形?-LMLPHP

未旋转,椭圆的主轴跨越我的视口(viewport)的宽度。当我围绕视线旋转 90 度时,椭圆的主轴现在跨越了我的视口(viewport)的高度,从而使椭圆变形(在这种情况下,使它看起来不那么偏心)。

c - 在 OpenGL 中围绕视线旋转时如何防止变形?-LMLPHP

我需要做些什么来防止这种变形(或至少解释它),因此围绕视线的旋转保留了椭圆的感知主轴(在这种情况下,导致它超出视口(viewport))?

最佳答案

当您调用 gluPerspective() 时,看起来您正在使用 1.0 作为方面。您应该使用宽度/高度。例如,如果您的视口(viewport)为 640x480,您将使用 1.33333 作为 aspect 参数。

关于c - 在 OpenGL 中围绕视线旋转时如何防止变形?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/79360/

10-11 19:34
查看更多