我用c写了这段代码来绘制一个有太阳和行星的行星系统
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
glMatrixMode(GL_MODELVIEW_MATRIX);
glPushMatrix();
glutWireSphere(1.0, 20, 16);
glLoadIdentity();
glRotatef((GLfloat) year ,0.0,1.0,0.0);
glTranslatef(2.0, 0.0, 0.0);
glRotatef((GLfloat) day, 0.0, 1.0, 0.0);
glutWireSphere(0.2, 10, 8);
glPopMatrix();
glutSwapBuffers();
但是当我编译并运行代码时,第二个球体不在视图中。在我增加 y 的值后,当它在中心球体后面时,它会出现一半的旋转,然后再次离开视图,球体的大小也比预期的要大。如果我注释掉对 glLoadIdentity() 的调用,一切正常。据我所知,glLoadIdentity() 使用单位矩阵加载当前 Matrix(ModelView_Matrix),以便所有平移和旋转的效果都被反转,但是为什么在这种情况下,当它被调用时绘制的对象在没有旋转时以不同的方式还是在调用之前正在执行转换?