- ApplicationEventsIdle:
 - glViewPort(0, 0, panMain.ClientWidth, panMain.ClientHeight);
 - glMatrixMode(GL_PROJECTION);
 - glLoadIdentity;
 - gluPerspective(60, panMain.ClientWidth/panMain.ClientHeight, 0.1, 128);
 - glMatrixMode(GL_MODELVIEW);
 - glLoadIdentity;
 - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 - Camera.UseMatrix;
 - glScalef(zoom,zoom,-zoom); //Z-Achse umkehren
 - glColor3f(0.5,0.5,0.5);
 - if Map <> nil then
 - Map.Draw;
 - glColor3f(1,1,1);
 - ShowText;
 - SwapBuffers(DC);
 - Done := False;
 - Camera.UseMatrix:
 - var RotMatrix : THomogeneousMatrix;
 - begin
 - RotMatrix := Rotation;
 - MatrixInvert(RotMatrix);
 - glMultMatrixf(@RotMatrix[0,0]);
 - glTranslatef(-Position[0], -Position[1], -Position[2]);
 - end;
 - Map.Draw:
 - Frustum.Calculate;
 - for i := -100 to 100 do
 - for j := -100 to 100 do
 - if Frustum.IsPointWithin(i,0,j) then
 - DrawPoint(i,j);
 - DrawPoint:
 - procedure DrawPoint(a,b:integer);
 - var y:single;
 - begin
 - y := 0;
 - //obenlinks
 - glBegin(GL_LINE_LOOP);
 - glVertex3f(a-0.5,0,b+0.5);
 - glVertex3f(a-0.5,0,b);
 - glVertex3f(a,y,b);
 - glVertex3f(a,0,b+0.5);
 - glEnd;
 - //obenrechts
 - glBegin(GL_LINE_LOOP);
 - glVertex3f(a,0,b+0.5);
 - glVertex3f(a,y,b);
 - glVertex3f(a+0.5,0,b);
 - glVertex3f(a+0.5,0,b+0.5);
 - glEnd;
 - //untenlinks
 - glBegin(GL_LINE_LOOP);
 - glVertex3f(a-0.5,0,b);
 - glVertex3f(a-0.5,0,b-0.5);
 - glVertex3f(a,0,b-0.5);
 - glVertex3f(a,y,b);
 - glEnd;
 - //untenrechts
 - glBegin(GL_LINE_LOOP);
 - glVertex3f(a,y,b);
 - glVertex3f(a,0,b-0.5);
 - glVertex3f(a+0.5,0,b-0.5);
 - glVertex3f(a+0.5,0,b);
 - glEnd;
 - end;
 

