作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在按键时在 x 轴上移动我的对象。但它看起来像对角线移动(左上和右下)这是我的代码:按键代码:
switch(key)
{
case 'a':
x++;
break;
case 'b':
x--;
break;
}
关于 OpenGL 部分:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30, 1 , 1 , 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(100, 100, 100, 0, 0, 0, 0, 1, 0);
glTranslatef(x;0,0);
为什么 glTranslatef 工作异常,我该如何解决?谢谢。
最佳答案
在翻译之前,您很可能正在轮换。这将旋转整个坐标空间,您的“沿 x 轴的平移”实际上将完全不同。
将来,请确保平移、缩放,然后旋转。这样每个转换都会按照您的意图进行,而不会被先前的转换所操纵。我建议您多研究一下矩阵、坐标空间和 OpenGL。
此外,glTranslatef 和其他矩阵堆栈函数已弃用。查看现代 OpenGL。
编辑:
gluLookAt 旋转以面向观察点。因此,涉及轮换。如果您不想要这个,请将它们切换过来。此外,这不是您的完整代码,它缺少 glMatrixMode 调用。
关于c++ - glTranslatef 沿对角线移动而不是沿主轴移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27013779/
我是一名优秀的程序员,十分优秀!