Wenn du im OnIdle das done auf false setzt, dann hast du quasi ne endlosschleife, weil OnIdle sofort wieder aufgerufen wird. Wird done auf True gesetzt wird anschileßend die Windowsbotschaften etc ausgeführt.
Guck dir sonst mal in der Delphihilfe TApplication.OnIdle an.
Du solltest deinen code aber nochmal überprüfen was du wie kopiert hast. Hab das nur kurz überflogen, aber ich meine da zwei rendermethoden gefunden zu haben. Eigentlich kannst du alles zum rendern im OnIdle Event unterbringen.
Über das OnIDle kommst du auch einfacher mit der TApplicationEvents Komponente.
Die
VCL hat auch für Spiele bzw.
OpenGL programmierung ihre daseinsberechtigung, da man sich halt nicht groß um den nervigen kram wie fenster erstellung und benutzereingaben kümmern muss.