Hallo,
ich habe seit vielen Jahren ein Programm, um Messdaten in 3D darzustellen. Mit Maus und Wheel kann ich schieben, drehen zoomen, also bestens. Ich mache das mit DirectX, das in einem TFrame im MainForm läuft.
Nun habe ich spezielle Messdaten, für die ich gerne vier solcher Frames auf dem Bildschirm hätte. Mein Ansatz:
Delphi-Quelltext
1: 2: 3:
| TPlott3D_multi = CLASS frame: array[0..3] of TPlott3D; END; |
In meinem bisherigen Programm habe ich als Test alle "Plott3D" ersetzt durch:
Delphi-Quelltext
1: 2:
| FOR i_frame:=0 TO 3 DO Plott3D_Multi.frame[i_frame].... |
Erwartet hatte ich nun vier gleiche Bilder in den vier Frames im Mainform. Aber nur der letzte Frame zeigt das Bild.
Jetzt erscheint mir das sogar logisch: DirectX nutzt ja die Hardware der Grafikkarte und die nimmt das, was zuletzt kommt.
Mein ursprüngliches Programm kann ich ohne Probleme mehrfach starten, funktioniert. Windows sichert also wohl bei einem Prozesswechsel die Daten.
Nun meine zwei Fragen:
a) Liege ich mit meiner Einschätzug richtig? Oder müsste es mit mehreren Frames gehen und ich habe ein falsches Verständnis?
b) Würde es gehen, wenn ich DirectX in vier einzelnen Threads unterbringe? Aus dem Thread würde zwar auf die Frames im MainForm zugegriffen, was eigenlich nicht sein sollte, aber ich habe mit solchen Konstrukten bisher keine Problem gehabt.
Vielleicht gibt es ja auch noch ander Lösungsideen.
Viele Grüße
GuaAck