gpt4 book ai didi

c++ - glRotatef 移动轴

转载 作者:太空宇宙 更新时间:2023-11-04 11:41:19 24 4
gpt4 key购买 nike

我是第一次尝试 OpenGL,所以我想编写一个简单的程序来显示一个框并让我移动相机。

由于 OpenGL 中没有相机这样的东西,我只是通过让整个世界以完全相反的方式移动来模拟我想要的每一个“相机运动”。在我开始轮换之前一切顺利。

每当我旋转世界 (glRotatef(10, 0, 1, 0);) 时,轴也会旋转,所以当我尝试应用其他变换时,例如(glTranslatef(0, 0, -10);) 在将世界移近相机之前,它现在朝着完全不同的方向移动。

我应该如何解决这个问题?

最佳答案

首先,您可以使用矩阵来累积相机的变换,就像 OpenGL 所做的那样。

但是,除了使用 glRotate 或 glTransform,您还可以使用 vector 数学库(即 GLM)并对矩阵变量(即 glm::mat4) 你会调用你的相机对象的“局部变换”。

每当你想在不同的空间(即:(1,0,0)(0,1,0)(0,0,-1))上应用变换时,你只需使用一个普通的新矩阵(就像 glPopMatrix会做),你会称之为“世界转变”。

在每一帧的末尾,您将乘以两个矩阵(local * world)并使用此结果为 OpenGL 提供 View 矩阵(即:glMatrixMode(GL_MODELVIEW); glLoadMatrix(&(local * world)[0]) ;)

哦,别忘了在帧末尾重置“世界变换”矩阵。

关于c++ - glRotatef 移动轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328124/

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