2014-02-28 89 views
1

我正在研究物理仿真工具。現在它只是一個控制檯應用程序,沒有GUI等,但我想在某個時候添加它。該應用程序有一個非常簡單的渲染器,以便我可以看到模擬的結果。我在過去使用過PyQt,我喜歡GUI開發,所以我想知道是否可以在PyQt中創建一個GUI,並在我的C++渲染器中使用QGLWidgets中的OpenGL上下文。現在我正在使用SDL進行渲染和事件處理,所以我們的想法是使用PyQt中生成的OpenGL上下文。將pyqt opengl上下文傳遞給C++進行渲染

有誰知道這是否可能?我一直在尋找可能的解決方案,但我還沒有找到任何明確的答案或例子。如果這是不可能的,你是否知道在python中開發GUI並使用C++渲染器的其他可能性?

+0

這是專門關於使用QGLWidget的OpenGL上下文還是關於從python運行C++代碼? – heinrichj

+0

我打算使用Boost.Python或SWIG從C++運行python,但我還沒有真正嘗試過它。然而,渲染器是我不知道如何粘合的一段代碼。 – emiguel

回答

1

您可以使用SWIG(swig.org)將您的C++渲染器庫封裝到一個python模塊中,該模塊可以導入到您的pyqt應用程序中。這假定你的C++庫有適當的函數,你必須從你從QGLWidget(initializeGL,resizeGL,paintGL)派生出來的類中調用它,否則它應該是非常簡單的。

沒有理由說Boost.Python不會像SWIG那樣工作。具體細節並不重要;最終你的python腳本調用C++函數和方法,所以必須有將python數據轉換爲C++數據並返回的代碼,如果這樣做正確,那麼你可以專注於你的GUI。

+0

好的,我理解這種方法。有沒有人試過它?我從來沒有使用SWIG,但它絕對是我正在考慮的選項之一。但是,因爲我打算只使用python,而且我正在使用Boost來完成其他任務,所以我稍微偏向於使用Boost.Python。在這種情況下,類似的方法會起作用嗎? – emiguel

+0

確定;延長我的答案 – Schollii