Piszę grę w kotka i myszkę w C++ z OpenGlem, chciałabym żeby obracały się one wokół własnej osi, jednak cały czas obracają się wokół środka globalnego układu współrzędnych (zamiast lokalnych). Taki jest kod (tzn. kluczowa część kodu):
void renderRoom()
{
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef( 0, 0, - 4.0 );
glBegin(GL_QUADS);
...
glEnd();
glPopMatrix();
}
void renderMouse()
{
glPushMatrix();
glTranslatef(mmovex, mmovey, 0.0);
glRotatef(mangle, 0.0, 0.0, 1.0);
glBegin(GL_POLYGON);
glColor3f(0.0, 0.0, 0.0);
glVertex3f(mousepoz[0][0], mousepoz[0][1], mousepoz[0][2]);
glVertex3f(mousepoz[1][0], mousepoz[1][1], mousepoz[1][2]);
glVertex3f(mousepoz[2][0], mousepoz[2][1], mousepoz[2][2]);
glVertex3f(mousepoz[3][0], mousepoz[3][1], mousepoz[3][2]);
glEnd();
glPopMatrix();
}
void Display()
{
KeyOperations();
SpecialKeyOperations();
renderRoom();
renderMouse();
renderCat();
glFlush();
glutSwapBuffers();
}
Funkcja renderCat wygląda analogicznie jak rendeMouse, w tablicy mousepoz są zapisane pozycje "wierzchołków" mysz (na razie jest to kwadrat). mmovex, mmovey, mangle są inicjowane zerami i zmieniają się w razie wciśnięcia odpowiednich klawiszy. Macie może pomysł czemu tak się dzieje? Z góry dzięki za pomoc.