glTranslatef对角移动而不是主轴移动

时间:2014-11-19 09:54:55

标签: c++ opengl

我想在按键上移动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工作奇怪,我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

在翻译之前,你很可能会轮换。这将旋转整个坐标空间,“沿x轴平移”实际上将完全不同。

将来,请确保翻译,缩放,然后旋转。这样,每次转换都可以完成您的预期,而不会受到先前转换的操纵。我建议你再研究一下矩阵,坐标空间和OpenGL。

此外,不推荐使用glTranslatef和其他矩阵堆栈函数。看看现代OpenGL。

编辑:

gluLookAt进行旋转以面向点。因此,涉及轮换。如果你不想要它,请切换它们。此外,这不是您的完整代码,它缺少glMatrixMode调用。