我有这部分代码在面上绘制一个带有颜色的长方体,以便区分它们。
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位于顶部)。
更让人感到奇怪的是,旋转整个物体的旋转遵循了预期的右手规则。
答案 0 :(得分:0)
正如雷托·科拉迪(Reto Koradi)在评论中指出的那样,我脑子里的轮换似乎是错误的。我期待整个飞机旋转并在投影的右侧发送立方体,以便左侧前方会变成黄色。
但是,当然,它是旋转的轴,绘制的内容不受后来转换的影响。所以真正发生的事情就是红色被绘制在前面,然后z轴在右侧,黄色在那里被绘制,依此类推其他面部。