Как вращать спрайт в OpenGL
Нужно чтобы спрайт вращался вокруг своего центра.
Сначала сделал и спрайт вращался вокруг центра своего размещения.
Потом переделал и спрайт вращается вокруг своего центра.
Но его координаты сместились и координаты других спрайтов тоже сместилися. Почему? Как это исправить?
procedure TSprite.Draw(x: Single; y: Single; w: Integer; h: Integer; angle: Single; TexID: Cardinal);
begin
glBindTexture(GL_TEXTURE_2D,TexID);
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glPushMatrix;
glTranslatef(x,y,0);
glrotatef(angle,0,0,1);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0);glVertex2f(-w/2, -h/2);
glTexCoord2f(1.0, 0.0);glVertex2f(w/2, -h/2);
glTexCoord2f(1.0, 1.0);glVertex2f(w/2, h/2);
glTexCoord2f(0.0, 1.0);glVertex2f(-w/2, h/2);
glEnd();
glPopMatrix;
end;
----------------------------------------------------------------
procedure ShowMenu;
begin
glClearColor(1,1,1,0);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT or GL_STENCIL_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0, 0 + ew, 0 , 0 + eh, 0, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
gldisable(GL_DEPTH_TEST);
glcolor3ub(255,255,255);
fge.spt.Draw(0,0,800,600,0,MainMenuImage);
glcolor3ub(255,255,255);
fge.spt.Draw(180,100,469,261,0,ButtonBarsImage);
glcolor3ub(255,255,255);
fge.spt.Draw(180,100,160,120,Angle,CrossImage);
glcolor3ub(255,255,255);
fge.spt.Draw(fge.inp.X,-fge.inp.Y+600,45,44,0,MouseImage);
end;