Mam QGraphicsScene z około 1000 QGraphicsItems, które są faktycznie przedmiotami fizyki. Każda ramka, którą posuwają się naprzód, sprawdza kolizje i usuwa te kolizje, między innymi. Naprawdę chciałbym mieć wielowątkową fizykę.Scenka z fizyki Qt wielowątkowość
Rozumiem, że klasy QGraphics nie są bezpieczne dla wątków. Oznacza to, że można je wywołać tylko z głównego wątku. Czy to zmusza mnie do wysłania końcowych właściwości elementu (x, y, obrót) każdej ramki do głównego wątku za pomocą mechanizmu sygnału/szczeliny, a następnie użyć metody głównego wątku, aby faktycznie zaktualizować QGraphicsItems? Czy istnieje prostszy sposób na zrobienie tego?
Poniżej znajduje się tylko hipoteza: czy mogę użyć QtConcurrent do uruchomienia metody na mojej liście QGraphicsItems? Jeśli użyję QMutex w mojej metodzie QGraphicsItem i QMutex w mojej metodzie fizyki (która zmieni właściwości mojego QGraphicsItem), czy zagwarantuje to, że tylko jeden wątek będzie czytał/zapisał każdy QGraphicsItem w dowolnym momencie?
Czytałem coś o użyciu QueuedConnection podczas łączenia sygnałów/slotów. Nie próbowałem ani nawet nie zaglądałem w szczegóły, ale uważam, że warto je zbadać. Czy ktoś inny ma doświadczenie w tym? – aldo
Użyłem portu Delphi Box2D i jestem z niego bardzo zadowolony. Dlaczego nie spróbować? Udaj się do tej [strony] (http://labs.qt.nokia.com/2010/02/26/qt-box2d-is-easy/), jeśli jesteś zainteresowany. – menjaraz
Box2D wygląda interesująco, ale nigdzie nie widzę, że jest wielowątkowy. – Joel