- procedure TMainForm.ApplicationEventsIdle(Sender: TObject;
- var Done: Boolean);
- var
- Error : LongInt; //Fehler?
- begin
- //Abbrechen, wenn OpenGL noch nicht initialisiert ist
- if not OpenGLInitialized then Exit;
- //Immer schön neu zeichnen
- Done := False;
- glClearColor(0,0,0,0);
- glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
- glLoadIdentity;
- glTranslatef( -1.5, 0, -6);
- {TIP: Entferne die beiden oberen glColor3f. Das Dreieck wird dann "blau" gezeichnet
- werden! Wenn Sie beim starten ganz schnell gucken, wirst du feststellen, dass das
- Dreieck kurz weiß zu flackern scheint. Der Grund dafür ist, dass beim ersten Durchgang
- die beiden ersten Eckpunkte weiß gezeichnet werden und erst beim nächsten Durchgang
- blau gefärbt werden. Um dies zu vermeiden müßte man bereits vor dem Zeichnen dieser
- beiden Eckpunkte die Farbe auf blau setzen!}
- //Hier mal zum Testen ausgeklammert,das wäre das Original Dreieck
- {glBegin(GL_TRIANGLES);
- glColor3f(1,0,0); // alle weiteren Vertice werden rot gezeichnet
- glVertex3f(-1.0,-1.0, 0.0);
- glColor3f(0,1,0); // alle weiteren Verticen werden grün gezeichnet
- glVertex3f( 0.0, 1.0, 0.0);
- glColor3f(0,0,1); // alle weiteren Verticen werden blau gezeichnet
- glVertex3f( 1.0,-1.0, 0.0);
- glEnd(); }
- //Zum Testen mal ausgeklammert
- glOrtho(0,640,0,480,-2000,2000);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity;
- glPushMatrix;
- glTranslatef(0, 0,-1);
- glScalef(1,-1,1);
- TextureFont.Print2D('Testeintrag 50050...', [10,30,-1],[1,1,1],1,1);
- TextureFont.Print3D('Testmuster', [1,1,-1], -1);
- glScalef(1,-1,1);
- glPopMatrix;
- //Hier habe ich mal so ziemlich alles mal nach und nach ausgeklammert
- //Auch hier und da die "Werte" verändert,geholfen hats nichts
- //Error Handler
- Error := glgetError;
- if Error <> GL_NO_ERROR then
- begin
- Caption := gluErrorString(Error);
- //Rendering kurz anhalten
- Done := True;
- FlashWindow(Handle, True)
- end;
- //Frame Counter
- Inc(Frames);
- if GetTickCount - StartTick >=500 then
- begin
- Caption := Format('%s [%f FPS]', [AppTitle, Frames/(GetTickCount - StartTick)*1000]);
- Frames := 0;
- StartTick := GetTickCount
- end;
- //Und anzeigen
- SwapBuffers(Canvas.Handle)
- end; (*ApplicationEventsIdle*)