[gelöst] QGLWidget Problem

Alles rund um die Programmierung mit Qt
Antworten
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

[gelöst] QGLWidget Problem

Beitrag von padreigh »

Was ich habe:

QWidget als seperates Fenster, enthält
- ein QMdiWindow
- einem Slider der den aktuellen Frame kontrolliert

Das QMdiWindow bekommt QMdiSubWindows welche meine abgeleiteten QGLWidgets als Widget haben.

Jede dieser Instanzen verwaltet 2 ViewListen:
- Koordinatensystem und Zeug (einmal generiert und bleibt unverändert)
- Daten des aktuellen Frames (neu generiert bei Slider.valueChanged() )

Jede Instance erhöht einen static instanceCounter und ignoriert fürs Listengenerieren die ersten glGenLists(instanceCounter * 2) glints (glGenLists are shared between instances)

Bewegt der Slider sich, erstelle ich in der QGL-Instanz eine neue viewLists mit Daten des aktuellen Frames und stoße ein updateGL() an.

Wenn ich eines meiner QGLWidgets nutze passt alles, ich kann durch die Daten Slidern und sehe immer den aktuellen Datensatz.

Habe ich 2 Instanzen (verschiedener FrameLänge) sehe ich für die Dauer des kürzeren Datensatzen statisch Frame 0 in beiden Fenstern, überschreitet der aktuelle Frame die Länge des kürzeren Datensatzes sehe ich den aktuellen Frame des längeren, der kürzere bleibt auf Frame 0.

Was mache ich falsch?
Zuletzt geändert von padreigh am 17. Mai 2010 15:05, insgesamt 1-mal geändert.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
N¤X
Beiträge: 77
Registriert: 21. September 2009 12:24

Beitrag von N¤X »

Ich verstehe nicht so ganz, was du tun willst...

Scheinbar willst du mehrere Animationen anzeigen, wobei jede Animation für jeden Frame definiert ist und in einem eigenen GLWidget läuft. Durch den Slider willst du dann durch die Frames laufen. Richtig so?

Dann machst du da noch was mit DisplayLists, was mir nicht so wirklich klar ist. Meinst du das so, dass der statische Teil jeder Animation in einer DisplayList ist und der Dynamische Teil für jeden Frame in einer eigenen DisplayList steht oder wie? Das kann aber schnell etwas speicheraufwändig werden. Oder kann eine Szene auch in mehreren GLWidgets dargestellt werden?

Und etwas Code wäre vllt auch noch hilfreich ^^
mfg N¤X
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Scheinbar willst du mehrere Animationen anzeigen, wobei jede Animation für jeden Frame definiert ist und in einem eigenen GLWidget läuft. Durch den Slider willst du dann durch die Frames laufen. Richtig so?
Fast.
1 Slider bestimmt den aktuellen Frame.
Animation 1: 200 Frames á 10 3D Punkte
Animation 2: 50 Frames á 6 3D Punkte
usw.
Dann machst du da noch was mit DisplayLists, was mir nicht so wirklich klar ist.
Pro Animation 2 Display Lists:
- eine [einmalig gefüllte] Liste enthält das GRID und die Koordinatenachsen
- eine [bei Slider::valueChanged()] mit aktuellen Koordinaten dieses Frames gefüllte Liste

[start minimalbeispiel erstellen]
ca. 3h später und schon fast halb fertig mit minibeispiel
[abbruch minimalbeispiel da idee]

nu tuts :) Stichwort: makeCurrent();

Aussehen tuts so:
Dateianhänge
so siehts aus ... ein bild ... tausend worte ...
so siehts aus ... ein bild ... tausend worte ...
tool.png (15.71 KiB) 2306 mal betrachtet
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten