OpenGL - 旋转方向错误

时间:2016-06-04 15:32:39

标签: opengl

我有这部分代码在面上绘制一个带有颜色的长方体,以便区分它们。

glMatrixMode(GL_MODELVIEW);     // To operate on model-view matrix
glLoadIdentity();                 // Reset the model-view matrix

glNewList(1, GL_COMPILE);
glBegin(GL_QUADS);
    glVertex3f(-1, -1, 1.0f);
    glVertex3f(1, -1, 1.0f);
    glVertex3f(1, 1, 1.0f);
    glVertex3f(-1, 1, 1.0f);
glEnd();
glEndList();

glTranslatef(0, 0, -50);

deg += 0.03;
glRotatef(deg, 0, 1, 0);

glScalef(10, 10, 20);

glColor3f(1, 0, 0); //red
glCallList(1);

glColor3f(1, 1, 0); //yellow
glRotatef(90, 0, 1, 0);
glCallList(1);

glColor3f(0, 1, 0); //green
glRotatef(90, 0, 1, 0);
glCallList(1);

glColor3f(0, 1, 1); //cyan
glRotatef(90, 0, 1, 0);
glCallList(1);

glColor3f(0, 0, 1); //blue
glRotatef(90, 1, 0, 0);
glCallList(1);

glColor3f(1, 0, 1); //magenda
glRotatef(180, 1, 0, 0);
glCallList(1);

这也是idleFunc的回调,因此对象一直在旋转。我的问题是我用来绘制对象的旋转是反向的。正面是红色的,但是黄色的正面是左边而不是左边,青色位于左边。顶部和底部也是如此(蓝色位于底部,magenda位于顶部)。

更让人感到奇怪的是,旋转整个物体的旋转遵循了预期的右手规则。

1 个答案:

答案 0 :(得分:0)

正如雷托·科拉迪(Reto Koradi)在评论中指出的那样,我脑子里的轮换似乎是错误的。我期待整个飞机旋转并在投影的右侧发送立方体,以便左侧前方会变成黄色。

但是,当然,它是旋转的轴,绘制的内容不受后来转换的影响。所以真正发生的事情就是红色被绘制在前面,然后z轴在右侧,黄色在那里被绘制,依此类推其他面部。