Miles
28-08-2003, 21:38
Ich bin - wie das einige vielleicht mitverfolgen - schon eine ganze Weile auf der Suche nach einer guten Ergänzung zu OpenGL bzw. wie ich es in Linux implementieren soll. Jetzt bin ich doch zu dem Schluss gekommen, dass Qt fürs Erste die Beste Wahl ist.
Mit einem normalen Fenster bekomme ich bei einer mehr oder weniger geringen Berechnung 400-5000 (!) fps zusammen, je nach dem, wie groß das Fenster ist.
Das liegt vorallem daran, dass ich noch keine Frame-Bremse eingebaut habe. Und genau da liegt das Problem:
In meinem QGLWidget wird die updateGL-Funktion mit einem QTimer aufgerufen.
Das läuft alles super - solange der QTimer mit dem Millisekunden-Wert 0 initialisiert wird. Also dass er so oft wie möglich das Bild updatet. Da meine Berechnungen (z.B. die Rotation) direkt mit der Zeichenfunktion zusammenhängt und da 500 fps überflüssig sind muss ich eine Frame-Bremse einbauen.
Also:
Wenn ich 50 fps (was noch viel zu hoch ist, aber das Problem verdeutlichen soll) erreichen will, muss ich den QTimer mit 20 ms initialisieren. Klar, oder?
PROBLEM:
Das Programm läuft jetzt (bei SEHR wenigen Objekten) scheinbar nicht mehr flüssig, da anscheinend die "Sprünge" bei der Rotation zu groß sind. (da das Bild nur noch 50 statt 500 mal/s aufgebaut wird)
Das ist für mich die einzige Erklärung.
Wie kann ich in mein Programm aber eine Frame-Bremse einbauen, die aber nicht das Bild von der Logik her verlangsamt? (Die 50 fps würde mehr als ausreichen, für die "Sprünge" der Rotation aber nicht.)
Vielleicht liegt das Problem aber auch an etwas anderem. Jedenfalls scheint das Bild in Bewegung trotz 50 fps nicht flüssig zu sein. Erst ab 200 fps oder mehr. HEEEEEEEEEEEEEE????????????????
Hoffe mich versteht jemand.
Bitte um Antwort.
Euer Miles, ein bisschen verzweifelt =P
Mit einem normalen Fenster bekomme ich bei einer mehr oder weniger geringen Berechnung 400-5000 (!) fps zusammen, je nach dem, wie groß das Fenster ist.
Das liegt vorallem daran, dass ich noch keine Frame-Bremse eingebaut habe. Und genau da liegt das Problem:
In meinem QGLWidget wird die updateGL-Funktion mit einem QTimer aufgerufen.
Das läuft alles super - solange der QTimer mit dem Millisekunden-Wert 0 initialisiert wird. Also dass er so oft wie möglich das Bild updatet. Da meine Berechnungen (z.B. die Rotation) direkt mit der Zeichenfunktion zusammenhängt und da 500 fps überflüssig sind muss ich eine Frame-Bremse einbauen.
Also:
Wenn ich 50 fps (was noch viel zu hoch ist, aber das Problem verdeutlichen soll) erreichen will, muss ich den QTimer mit 20 ms initialisieren. Klar, oder?
PROBLEM:
Das Programm läuft jetzt (bei SEHR wenigen Objekten) scheinbar nicht mehr flüssig, da anscheinend die "Sprünge" bei der Rotation zu groß sind. (da das Bild nur noch 50 statt 500 mal/s aufgebaut wird)
Das ist für mich die einzige Erklärung.
Wie kann ich in mein Programm aber eine Frame-Bremse einbauen, die aber nicht das Bild von der Logik her verlangsamt? (Die 50 fps würde mehr als ausreichen, für die "Sprünge" der Rotation aber nicht.)
Vielleicht liegt das Problem aber auch an etwas anderem. Jedenfalls scheint das Bild in Bewegung trotz 50 fps nicht flüssig zu sein. Erst ab 200 fps oder mehr. HEEEEEEEEEEEEEE????????????????
Hoffe mich versteht jemand.
Bitte um Antwort.
Euer Miles, ein bisschen verzweifelt =P