太陽と惑星のある惑星系を描くために、このコードを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();
しかし、コードをコンパイルして実行すると、2 番目の球体がビューに表示されません。y の値を大きくすると、中心球の後ろにあるときに回転の半分が表示され、再びビューから外れます。また、球のサイズも予想よりも大きくなります。glLoadIdentity() の呼び出しをコメント アウトすると、すべて正常に動作します。私の知る限り、glLoadIdentity() は現在の Matrix(ModelView_Matrix) を単位行列でロードして、すべての平行移動と回転の効果が逆になるようにしますが、この場合、呼び出されたときに描画されるオブジェクトが、回転がない場合に異なる方法で表示されるのはなぜですかまたはその呼び出しの前に変換が実行されていますか?