将OpenGL应用程序与Qt集成?

时间:2013-10-29 18:42:01

标签: c++ linux qt opengl

我是使用OpenGL的新手,并且不知道gl上下文和这样的工作如何与我相处。我有一个使用OpenGL for Linux用C ++编写的应用程序,我希望能够在全屏模式下继续在我的机器上运行,然后我想在Qt中创建另一个应用程序以在同一个窗口上呈现另一个应用程序是渲染到。我还希望能够将数据从OpenGL应用程序发送到Qt应用程序并返回。

如何完成这些任务,是否可以将应用程序分开,或者更容易让Qt包装其他应用程序的gl上下文?

我找到了一些可能有帮助的链接,但此时它们已经超出我的想法,我需要一些指导:

2 个答案:

答案 0 :(得分:2)

如果你想分享由OpenGL操纵的纹理,vbo等......那么每个上下文必须在同一个应用程序中创建。

否则,如果您想将其他数据发送到其他应用程序,这是一个IPC案例,您可以阅读http://en.wikipedia.org/wiki/Inter-process_communication

答案 1 :(得分:1)

我不知道如何在Linux上使用两个应用程序。 在Windows上,我知道这是不可能的,因为你会在屏幕底部有Windows栏,你必须强迫QT窗口保持在一切之上。这不是很实用,但如果这两个应用程序只运行,它可能会这样做。

另外两个应用程序的解决方案是在无边框标题栏窗口中运行OpenGL,设置为屏幕分辨率的大小。但你仍然需要管理第二个应用程序窗口以保持在第一个应用程序窗口之上,仍然不实用。

因此,从您正在绘制的上下文来看,似乎最好的解决方案是只创建一个应用程序。使用QT,您可以在其上呈现一些OpenGL和一些QWidgets。甚至可以在OpenGL之上使用QGraphicsView并使用QML。但是,如果使用过多的透明度,可能会导致性能下降。