Я написал этот фрагмент кода на языке 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() загружает текущую матрицу (ModelView_Matrix) с матрицей идентичности, чтобы эффект всех переводов и поворотов был обратным, но почему в этом случае объекты, нарисованные при его вызове, отображаются по-разному, когда нет поворотов или преобразования выполняются до его вызова?