c++ - 无法理解 gluLookAt 参数

标签 c++ visual-studio opengl glut

我现在正在学习 OpenGL(过剩)。通过使用 GL_Lines,我绘制了立方体,但它看起来像正方形,所以我尝试使用 gluLookAt。我一直在搜索和试验,但我不明白它是如何工作的!请帮忙。

最佳答案

documentation 中所述

C 规范

void gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ,
               GLdouble centerX, GLdouble centerY, GLdouble centerZ,
               GLdouble upX, GLdouble upY, GLdouble upZ);

参数

eyeXeyeYeyeZ
指定视点的位置。

centerX, centerY, centerZ
指定引用点的位置。

upX, upY, upZ
指定向上 vector 的方向。

描述

gluLookAt 创建一个从视点派生的观察矩阵,一个指示场景中心的引用点,以及一个 UP vector 。

矩阵将引用点映射到负z轴,将视点映射到原点。当使用典型的投影矩阵时,场景的中心因此映射到视口(viewport)的中心。类似地,投影到观察平面上的 UP vector 所描述的方向被映射到正 y 轴,因此它在视口(viewport)中指向上方。 UP vector 不能平行于从视点到引用点的视线。

借用下图(source)

enter image description here

eyePcenterfcup code> 将 up。 “近平面”和“远平面”定义了 viewing frustum 的范围。

关于c++ - 无法理解 gluLookAt 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751873/

相关文章:

c++ - 在没有其他 boost 的情况下使用 boost 模块?

c++ - STL 的自定义分配器仅在 Release模式下无法编译

c++ - MPI_Send 发送数组地址还是数组内容

c# - 在 ASP .NET CORE 中更新 Web 应用程序替换文件或删除文件,更新时如何在应用程序中保留文件

c++ - 大量警告会增加编译时间吗?

c++ - SDL TTF 库内存泄漏(每帧创建和释放曲面)

opengl - 调用 gl.GenVertexArrays 时出现内存错误

opengl - 在 OpenGL 顶点着色器中,gl_Position 不会被均匀化

c++ - 我的 CMakeLists 有问题吗?

c++ - 您的计算机 Debug模式 Visual C++ 2012 上缺少 MSVCP100D.dll