2012-07-21 55 views
2

我想使用一個在模擬器窗口內部的GLWidget,並且希望使用framebuffer對象將數據發送到mainwindow的glwidget。Qt在兩個窗口部件之間發送OpenGL圖像的最佳方式

我已經使用信號/插槽來實現這一點,但是我在多線程問題和異常方面遇到了很多問題。

實現該方案的最佳方法是什麼? ![附上我想要做的場景圖片] [1]

回答

2

如果你想共享framebuffer對象,你應該使用GL上下文資源共享,而不是Signal/Slot。後者運行在主內存中,而上下文共享發生在GPU上。所以沒有數據的副本(通過公共汽車返回並返回!)。

在QGLWidget來繪圖文檔中解釋兩個小部件都可以有共享方面:

如果shareWidget是一個有效的QGLWidget來繪圖,這個小部件將與shareWidget分享的OpenGL 顯示列表和紋理對象。但是,如果shareWidget 和這個小部件有不同的格式,共享可能是不可能的。 您可以通過調用isSharing()來檢查共享是否有效。

http://doc.qt.nokia.com/4.7-snapshot/qglwidget.html#QGLWidget

+0

這可以導致崩潰由於多線程? 我已經做了信號插槽的情況下,我有問題在這裏: http://stackoverflow.com/questions/11593461/multithreading-crash-using-qt-and-qogl – 2012-07-22 00:06:11

+1

您發佈的鏈接是無關的我描述的方法。在我的方法中,最多可以使用信號/槽來觸發另一個窗口來獲取紋理/ fbo。 fbo本身停留在共享上下文資源中,不會被傳輸。 – ypnos 2012-07-22 09:06:14

+0

你可以請提供一個例子或示例代碼:)? – 2012-07-22 18:25:50

相關問題