Tôi đang thực hiện tải lên kết cấu nhiều (60 hình ảnh VGA một giây) và nó chặn luồng UI của tôi. Từ the Qt 5.1 QGLWidget manual page (nhấn mạnh mỏ):QGLWidget trong chuỗi khác? Tài liệu tham khảo là gì?
Tải lên kết cấu trong chuỗi. Thực hiện tải lên kết cấu trong một chuỗi có thể rất hữu ích cho các ứng dụng xử lý một lượng lớn hình ảnh cần được hiển thị, ví dụ như ứng dụng thư viện ảnh. Điều này được hỗ trợ trong Qt thông qua API bindTexture() hiện có. Một cách đơn giản để làm điều này là tạo hai chia sẻ QGLWidgets. Một được tạo hiện tại trong luồng GUI chính, trong khi cái kia được tạo hiện tại trong chuỗi tải lên kết cấu. Tiện ích trong chuỗi tải lên không bao giờ được hiển thị, nó chỉ được sử dụng để chia sẻ họa tiết với chuỗi chính. Đối với mỗi kết cấu bị ràng buộc qua bindTexture(), hãy thông báo cho luồng chính để nó có thể bắt đầu sử dụng kết cấu.
Cái gì? Làm thế nào để một lớp QWidget như QGLWidget được chuyển sang một luồng? Cố gắng thực hiện kết quả như sau:
QObject::moveToThread: Widgets cannot be moved to a new thread
Tôi không hiểu tài liệu đang đề xuất gì tôi triển khai để di chuyển, ví dụ: bindTexture()
thực hiện trong chuỗi giao diện người dùng.
này cũng được đề cập ở đây: Qt4/Opengl bindTexture in separated thread
Không có mã đăng ở đó mặc dù.
Đúng. Thông tin thêm [tại đây] (http://blog.qt.digia.com/blog/2011/06/03/threaded-opengl-in-4-8/). Ngoài ra, trong Qt 5, bạn thực sự nên sử dụng các lớp QOpenGL *, không phải lớp QGL *, nếu có thể. – peppe