我想在按键上移动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工作奇怪,我该如何解决这个问题?感谢。
答案 0 :(得分:2)
在翻译之前,你很可能会轮换。这将旋转整个坐标空间,“沿x轴平移”实际上将完全不同。
将来,请确保翻译,缩放,然后旋转。这样,每次转换都可以完成您的预期,而不会受到先前转换的操纵。我建议你再研究一下矩阵,坐标空间和OpenGL。
此外,不推荐使用glTranslatef和其他矩阵堆栈函数。看看现代OpenGL。
编辑:
gluLookAt进行旋转以面向点。因此,涉及轮换。如果你不想要它,请切换它们。此外,这不是您的完整代码,它缺少glMatrixMode调用。