Wie würdet ihr eigentlich die 3D Ansicht am einfachsten ein und ausschalten? Weil ich brauche in meiner Soft nicht immer die 3D Ansicht und zwecks CPU Schonung würde ich die dann gerne abschalten.
Macht es Sinn einfach das Event Application.OnIdle := NIL; zu setzen und wenn ich 3D brauche wieder auf Application.OnIdle := ApplicationEventsIdle; ?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Da du selber renderst hättest du auch die Möglichkeit nicht in einer Endlosschleife (OnIdle) sondern nur dann zu rendern, wenn es vorlangt wird.
Was musst du dafür tun. Nur mal aus der Betrachtung eines Formulares.
Im OnShow Initialisierst du OpenGL
Im OnClose Deinitialisierst du es.
(Spielt eigentlich keine Übergeordnete Rolle wo das passiert)
Im OnPaint renderst du + SwapBuffers. Wenn OpenGL noch nicht initialisiert sein kann musst du es hier abprüfen ob es das ist oder nicht.
Wenn dein Fenster jetzt von hand neu gezeichnet werden muss dann rufst du Form.Repaint auf. Damit wird das Fenster neu gezeichnet. Sonst wird es immer nu gezeichnet wenn dies auch nötig ist. Du könntest auch weiterhin im OnIdle Repaint (Oder direkt die Methode aufrufen). Damit würdest du wieder die schnellste Rendermethode haben. Aber das müsstest du aber nicht mehr. Wenn du Animationen hast und die genaue Einhaltung der FPS nicht so wichtig ist, dann kannst du auch mit einem Timer da Repaint aufrufen. Damit dürftest du sehr deutlich die CPU-Leistung reduzieren können. Ohne Animationen zeichnest du nur im OnPaint. Dann brauchst du die Ansicht auch nicht zu deaktivieren. Sie macht ja dann meistens nichts.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.