首先,我很抱歉,如果我让任何人感到困惑,因为我不知道该怎么说这句话。
无论如何,我想做的是在3轴上旋转,但彼此独立。如果我有
glRotatef(getPitch(),1f,0,0);
glRotatef(getYaw(),0,1f,0);
glRotatef(getRoll(),0,0,1f);
然后,它在x轴上旋转我的对象就好了,但是另外两个轴在x旋转的偏移处旋转。如何将这些旋转独立于彼此? (在同一个对象上)
再次,抱歉,如果我困惑任何人。
答案 0 :(得分:0)
你可以将矩阵推入和弹出堆栈,这样就可以了:
glPushMatrix();
glRotatef( getPitch(), 1.0f, 0.0f ,0.0f );
glPopMatrix();
glPushMatrix();
glRotatef( getYaw(), 0.0f, 1.0f, 0.0f);
glPopMatrix();
glPushMatrix();
glRotatef( getRoll(), 0.0f, 0.0f, 1.0f);
glPopMatrix();
所以基本上,推动矩阵,将变换矩阵保存在其当前状态中。您可以在对象上应用所需的变换(在您的情况下围绕轴旋转),这将更新矩阵。弹出它会在应用旋转之前将其恢复到原始状态。然后,您可以独立于其他旋转应用每个旋转。