Tengo un QGraphicsScene con aproximadamente 1000 QGraphicsItems, que en realidad son elementos de física. Cada fotograma avanza, comprueba colisiones y resuelve esas colisiones, entre otras cosas. Realmente me gustaría tener la física multiproceso.Qt física escena multiproceso
Tengo entendido que las clases de QGraphics no son seguras para subprocesos. Es decir, solo pueden ser llamados desde el hilo principal. ¿Esto me obliga a enviar las propiedades finales (x, y, rotación) de cada cuadro al hilo principal utilizando un mecanismo de señal/ranura, y luego utilizar un método de hilo principal para actualizar realmente los QGraphicsItems? ¿O hay una manera más fácil de hacer esto?
Lo que sigue es solo una hipótesis: ¿Podría usar QtConcurrent para ejecutar un método en mi lista de QGraphicsItems? Si uso un QMutex en mi método de pintura QGraphicsItem y un QMutex en mi método de física (que cambiará las propiedades de mi QGraphicsItem), ¿garantizaría esto que solo un hilo esté leyendo/escribiendo cada QGraphicsItem en cualquier momento en el tiempo?
He leído algo sobre el uso de QueuedConnection al conectar las señales/ranuras. No lo he intentado, ni siquiera he investigado los detalles, pero creo que vale la pena seguir investigando. ¿Alguien más tiene experiencia con esto? – aldo
Utilicé el puerto Delphi de Box2D y estoy muy satisfecho con él. ¿Por qué no intentarlo? Diríjase a esta [página] (http://labs.qt.nokia.com/2010/02/26/qt-box2d-is-easy/) si está interesado. – menjaraz
Box2D parece interesante, pero no veo en ningún lado que sea multiproceso. – Joel