glLoadIdentity();
glPushMatrix();
rysujObiekt1();
glPopMatrix();
glPushMatrix();
glRotatef( kat1, 0, 1, 0 );
glTranslatef( 0, 0, - 2 )
rysujObiekt1();
glTranslatef( 0, 0, 2 );
glRotatef( - kat, 0, 1, 0 );
jakbys nie wrocil do stanu poprzedniego, ale rysowal dalej, to rysowalbys wciaz pod tym katem, ewentualnie bys dokladal kolejne przeksztalcenia.
wyobraz sobie, ze stoisz na srodku pokoju, patrzysz w okreslone miejsce - to bedzie twoj stan wyjsciowy.
idziesz 2 kroki, obracasz sie (translate, pozniej rotate), kladziesz pudlo kartonowe, odwracasz sie spowrotem, cofasz sie spowrotem - jestes w miejscu poczatkowym - jak widzisz karton? oddalony na wprost, odwrocony pod katem...
jestes w tym samym miejscu - robisz obrot, pozniej 2 kroki do przodu - kladziesz karton, cofasz sie, odracasz spowrotem do miejsca pocaatkowego - co widzisz ? karton, ale nie na wprost, lecz pod pewnym katem,
dowodzi to tego, ze trzeba takze uwazac na kolejnosc przeksztalcen, zwlaszcza rotacji i przemieszczenia
dodatkowo, bedac przy kartonie, w tym miejscu dajac
glPushMatrix()
zapamietasz wlasnie to miejsce, wiec po tym wywolanie
glPopMatrix
cofnie cie do miejsca przy kartonie, dopiero kolejne do punktu wyjscia