Tôi có một QGraphicsScene với khoảng 1000 QGraphicsItems, đây là các mục vật lý thực sự. Mỗi khung hình họ tiến lên, kiểm tra va chạm, và giải quyết những va chạm đó, trong số những thứ khác. Tôi thực sự muốn có vật lý đa luồng.Ghép đa luồng cảnh vật lý Qt
Tôi hiểu rằng các lớp QGraphics không an toàn. Có nghĩa là, chúng chỉ có thể được gọi từ chủ đề chính. Điều này có buộc tôi gửi các thuộc tính mục cuối cùng (x, y, xoay) mỗi khung đến chuỗi chính bằng cách sử dụng cơ chế tín hiệu/khe, và sau đó sử dụng một phương thức chủ đề chính để thực sự cập nhật QGraphicsItems? Hay có cách nào dễ hơn để làm điều này?
Điều gì sau đây chỉ là giả thuyết: Tôi có thể sử dụng QtConcurrent để chạy một phương thức trong danh sách QGraphicsItems của mình không? Nếu tôi sử dụng QMutex trong phương pháp vẽ QGraphicsItem của tôi và QMutex trong phương pháp vật lý của tôi (điều này sẽ thay đổi các thuộc tính của QGraphicsItem), điều này có đảm bảo rằng chỉ có một luồng đang đọc/ghi mỗi QGraphicsItem tại bất kỳ thời điểm nào?
Tôi đã đọc một số điều về cách sử dụng QueuedConnection khi kết nối tín hiệu/khe. Tôi đã không thử nó hoặc thậm chí nhìn vào các chi tiết, nhưng tôi nghĩ rằng nó có giá trị điều tra thêm. Có ai khác ngoài kia có kinh nghiệm với điều này không? – aldo
Tôi đã sử dụng cổng Delphi của Box2D và tôi rất hài lòng với nó. Tại sao không thử? Đi đến [trang] này (http://labs.qt.nokia.com/2010/02/26/qt-box2d-is-easy/) nếu bạn quan tâm. – menjaraz
Box2D trông thú vị, nhưng tôi không thấy bất cứ nơi nào mà nó đa luồng. – Joel