Hallo SunSet,
das Problem besteht darin, dass das
OpenGL Koordinatensystem mit all seinen Transformationen am Anfang jedes Renderns auf seinen Ursprungszustand gesetzt wird. Also verschiebst du bei deinem Klick das Rechteck immer um die gleiche Strecke.
Deshalb nimmst du am besten eine Variable, in der du die Strecke zum verschieben speicherst, diese dann beim Key Event veränderst und dann das Koordinatensystem transformierst und schließlich das Quad zeichnest.
Noch eine Anmerkung: Das Transformieren vor glBegin aufrufen:
Delphi-Quellcode:
procedure Render;
begin
//Initialisieren ...
glTranslated(dx, 0, 0); //dx immer im OnKey ändern
glBegin(GL_QUADS);
//hier jetzt dein quad
end;