0

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

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

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

4

2 回答 2

2

如果您想共享由 OpenGL 操作的纹理、vbo 等,则必须在同一个应用程序中创建每个上下文。

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

于 2013-10-29T18:47:20.680 回答
1

我不知道如何在 Linux 上使用两个应用程序。在 Windows 上,我知道这实际上是不可能的,因为您将在屏幕底部拥有 Windows 栏,并且您必须强制 QT 窗口保持在所有内容之上。这不是很实用,但如果只有这两个应用程序正在运行,它可能会这样做。

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

因此,从您所绘制的上下文来看,最好的解决方案似乎是只创建一个应用程序。使用 QT,您可以在其上渲染一些 OpenGL 和一些 QWidget。甚至可以在 OpenGL 之上拥有一个 QGraphicsView 并使用 QML。但是,如果您使用过多的透明度,您的性能可能会很差。

于 2013-10-30T18:09:02.160 回答