繁体   English   中英

glTranslatef 在 glRotatef 之后被搞砸了

[英]glTranslatef gets messed up after glRotatef

我是 PyOpenGL 的新手。 我使用它编写了一个简单的代码来显示一个立方体,您可以使用键盘在它周围导航。 但是,我注意到在调用 glRotatef 命令后,它会改变您的视角,而不是对象的位置。 但是, glTranslatef 不适用于透视,而是文字坐标系。 换句话说,在调用 glRotatef 命令 90* 之后,本来可以让您向前移动的 glTranslatef 命令现在将您向左移动。 有没有像 glTranslatef 这样的函数,只是它随着旋转而变化,所以你不会得到奇怪的动作,或者你可以做的某种解决方法来改变你基于旋转传递给 glTranslatef 的值?

glTranslateglRotate等操作定义了一个(平移或旋转)矩阵,并将当前矩阵乘以新矩阵。
矩阵乘法不是可交换的 如果你想旋转模型并独立于旋转平移模型,那么你必须在平移之前进行旋转,分别将平移矩阵乘以旋转矩阵:(OpenGL矩阵乘法必须从右到左读取):

modelmatrix = translation * rotation

分别在glRotate之前glTranslate

glTranslate(x, y, z)
glRotate(angle, ax, ay, az)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM