Multithreading in QGLWidget

Alles rund um die Programmierung mit Qt
Antworten
everlast
Beiträge: 7
Registriert: 7. September 2009 20:52

Multithreading in QGLWidget

Beitrag von everlast »

Hallo alls zusammen. Mein Problem ist folgendes:
Ich habe ein Programm, welches Bilder von einer Kamera (oder von einem Stream-File) liest und die dann mittels OpenGL darstellt. Gleichzeitig soll der User in der Lage sein das Bild zu drehen usw... Klappt soweit auch ganz gut. Das Problem ist aber, dass Usereingaben (also zum Beispiel Mausklick+Taste gedrückt lassen zum drehen des Bildes) zu einer stockenden/ruckeligen Darstellung des "Bildstroms" führen.
Kann ich das irgendwie in mehreren Threads laufen lassen? Also zum Beispiel das Zeichnen und Bilder holen in einem THread und die Nutzereingaben in einem anderen, damit Man die Bilder drehen kann und gleichzeitig eine flüssige Darstellung bekommt? Gibts dazu evtl. sogar Beispielcode?

Danke ;)
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Mit Threads könnte man schon das eine oder andere erledigen (z.B. die Frames von der Kamera grabben). Aber dies braucht Erfahrung und ein sauberes Konzept (es dürfen z.B. keine GUI-Operationen in Threads gemacht werden.. das bedeutet z.B., dass du dort nichts(!) mit irgendwelchen QWidgets machen darfst).

Aber ich würde mich ohnehin mit einer anderen Frage beschäftigen: wieso "ruckelt" es? In OpenGL zu drehen benötigt eigentlich keine Zeit (jedes 3D-Spiel macht das tausendfach).
Hast du mal mit qDebug()-Ausgaben versucht festzustellen, wo denn genau die Zeit flöten geht? Reagierst du z.B. auf jedes Mausevent und löst dadurch hunderte Updates aus?

Etwas Code könnte helfen.. besonders der Code der User-Eingaben (z.B. mouseMoveEvent(..)).

hth..
Antworten