Seite 1 von 1

qt QGLWidget runloop

Verfasst: 16. April 2010 14:10
von fedex
die methode paintGL eines QGLWidget wird ja immer nur ausgeführt wenn sie benötigt wird.

wie mach ich das, dass die methode ununterbrochen ausgeführt wird. brauch das für mehrere sachen z.b. soll für jeden frame ein simulationsschritt gemacht werden und die fps sollen berechnet werden und angezeigt werden.

Verfasst: 16. April 2010 22:28
von N¤X
Wenn du das wirklich so oft wie möglich rendern willst sollte es gehen in einem extra Thread einfach

Code: Alles auswählen

forever {
  updateGL();
}
aufzurufen. Das macht dir zwar ne ganz schöne Auslastung aber dank eigenem Thread sollte wenigstens dein Programm weiterhin nutzbar sein. Ansonsten kannst du natürlich auch einen Timer mit dem updateGL() Slot verbinden und z.B. alle 16ms feuern lassen (gibt etwas mehr als 60fps). Was mit deiner GUI passiert wenn du den Timer einfach alle 1ms feuern lässt weiß ich jetzt nicht, wäre aber auch mal einen Versuch wert...
Sowas wie die Idle-Funktion vom GLUT gibts jedenfalls meines Wissens nach nicht.

PS: Du weißt ja hoffentlich: Niemals paintGL() direkt aufrufen, immer brav updateGL() ;)

Verfasst: 17. April 2010 20:24
von fedex
ich weiß nicht genau, wo ich das updateGL aufrufen soll??