gpt4 book ai didi

c++ - OpenGL - 透视问题

转载 作者:行者123 更新时间:2023-11-30 03:05:13 25 4
gpt4 key购买 nike

我只想创建一个透视图,让相机的眼睛位于,比如说:(2, 2, -2),正对着原点。我正在尝试结合使用 gluLookAt()glFrustum(),但出于某种原因,虽然它正在渲染,但我的对象看起来非常扭曲:

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.0, 500.0);

...

gluLookAt (-2.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0);

我做错了什么?

编辑:这是一张截图。左侧定义要绕 y 轴扫描的轮廓曲线。在透视图中它应该是一个圆柱体,但是它……扭曲了。

enter image description here

编辑 2:此外,透视图中的轴设置如下,我知道这是不正确的:

// draw the axis
glBegin(GL_LINES);
// x
glVertex3f(500.0, 0.0, 0.0);
glVertex3f(-500.0, 0.0, 0.0);
// y
glVertex3f(0.0, -500.0, 0.0);
glVertex3f(0.0, 500.0, 0.0);
// z
glVertex3f(0.0, 0.0, -500.0);
glVertex3f(0.0, 0.0, 500.0);

glEnd();

编辑 3:此外,该形状的所有顶点的 x、y 或 z 值都不大于 1.0..

最佳答案

What am I doing wrong?

我不认为你做错了什么。您希望在左 Pane 中看到的那种 View 通常使用正交 投影来完成。您看到的失真只是透视失真;您并不是垂直于曲线看(曲线位于 XY 平面内,而您是从某个角度看 XY 平面)。

旁注:

投影矩阵只定义了 OpenGL 的“lens”。它不得用于放置“相机”。任何视点定位( View )都被定义为模型 View 转换的一部分。因此,gluLookAt 旨在用于模型 View 矩阵。

关于c++ - OpenGL - 透视问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com