我有这个部分的代码,绘制一个矩形的平行线与颜色的脸,以区别他们。
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在顶部)。
更奇怪的是,旋转使整个物体旋转,就像预期的那样遵循右手法则。
发布于 2016-06-05 11:06:01
就像雷托·科拉迪在他的评论中所说的那样,我的想法似乎错了。我以为整个飞机都会旋转,然后把立方体放在投影的右边,这样左边就会变成黄色。
但是当然,旋转的是轴,所绘制的东西不受以后的转换的影响。所以真正发生的是,红色画在前面,然后z轴在右边,黄色画在那里,等等。
https://stackoverflow.com/questions/37631981
复制相似问题