begin
fps2 := fps2+1;
glMatrixMode(GL_PROJECTION);
// In die Projektionsmatrix wechseln
glLoadIdentity;
// Identitätsmatrix laden
glViewPort(0, 50, ClientWidth, ClientHeight);
// Viewport an Clientareal des Fensters anpassen
gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
// Perspective, FOV und Tiefenreichweite setzen
glMatrixMode(GL_MODELVIEW);
//In die Modelansichtsmatrix wechseln
glClear(GL_COLOR_BUFFER_BIT
or GL_DEPTH_BUFFER_BIT);
// Farb- und Tiefenpuffer löschen
glLoadIdentity;
// Identitätsmatrix laden
if mauspos = 1
then rotation := rotation + 1 * timefactor;
//Rechtsdrehen
if mauspos = 2
then rotation := rotation - 1 * timefactor;
//Linksdrehen
if GetAsyncKeyState(vk_up) <> 0
then begin // Nach oben Taste gedrückt? Ja: Bewegen
ypos := ypos - cos(degtorad(rotation))*0.1*timefactor
end;
if GetAsyncKeyState(VK_Down) <> 0
then begin // Nach Unten Taste gedrückt? Ja: Bewegen
ypos := ypos + cos(degtorad(rotation))*0.1*timefactor
end;
// glBindTexture(GL_TEXTURE_2D, tex);
glRotatef(rotation,0,1,0);
//Die entgültige Drehung
glTranslatef(0, 0, ypos);
//Die entgültige Bewegung
glbegin(gl_quads);
glvertex3f(-1.4,-0.5,-3);
glvertex3f(-0.2, 0.5,-3);
glvertex3f( 0.2, 0.5,-3);
glvertex3f( 1,-0.5,-3);
glend;
glTranslatef(0,1,0);
glpopmatrix;
glbegin(gl_quads);
glvertex3f(-1,-0.2,-6);
glvertex3f(-0.2, 0.2,-6);
glvertex3f( 0.2, 0.2,-6);
glvertex3f( 1,-0.2,-6);
glend;
// Hinteren Puffer nach vorne bringen
SwapBuffers(
DC);
// Windows denken lassen, das wir noch nicht fertig wären
Done := False;
// Nummer des gezeichneten Frames erhöhen
inc(Frames);
// FPS aktualisieren
if GetTickCount - StartTick >= 500
then begin
FPS := Frames/(GetTickCount-StartTick)*1000;
Frames := 0;
StartTick := GetTickCount
end;