将pyqt opengl上下文传递给C进行渲染

Passing pyqt opengl context to C++ for rendering

我正在研究物理模拟工具。现在它只是一个控制台应用程序,没有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。