我正在研究物理模拟工具。现在它只是一个控制台应用程序,没有 GUI 等,但我想在某个时候添加它。该应用程序有一个非常简单的渲染器,因此我可以看到模拟的结果。
我过去使用过 PyQt,我喜欢它用于 GUI 开发,所以我想知道是否可以在 PyQt 中创建一个 GUI,并在我的 C++ 渲染器中使用来自 QGLWidgets 的 OpenGL 上下文。现在我使用 SDL 进行渲染和事件处理,所以我的想法是改用在 PyQt 中生成的 OpenGL 上下文。
有人知道这是否可行吗?我一直在寻找可能的解决方案,但没有找到任何明确的答案或示例。如果不可能,您是否知道在 python 中开发 GUI 并使用 C++ 渲染器的任何其他可能性?
最佳答案
您可以使用 SWIG (swig.org) 将您的 C++ 渲染器库包装到一个 python 模块中,然后该模块可以导入到您的 pyqt 应用程序中。这假定您的 C++ 库具有适当的函数,您必须从派生自 QGLWidget 的类(initializeGL、resizeGL、paintGL)中调用这些函数,但否则它应该非常简单。
没有理由表明 Boost.Python 的工作方式与 SWIG 不同。具体细节并不重要;最终你的 python 脚本正在调用 C++ 函数和方法,因此必须有代码将 python 数据转换为 C++ 数据并返回,如果正确完成,那么你可以专注于你的 GUI。
关于c++ - 将 pyqt opengl 上下文传递给 C++ 进行渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092853/