c++ - 在 C++ 中具有单个 openGL 上下文的多个 QGLWidgets

标签 c++ qt opengl

我正在编写一个由多个 (16-32) 绘图组成的应用程序,这些绘图每秒更新几次并使用 openGL 绘制。到目前为止,我已经用 GLUT 完成了大部分情节的原型(prototype)制作。但是我想采用像 QT 这样的完整框架,并且我正准备编写一个测试 QGLWidget。

在开始之前,我想弄清楚是否有可能让多个 QGLWidgets 共享一个 openGL 上下文?如果是这样,在小部件之间共享 openGL 上下文时,我需要跟踪什么细节吗?

最佳答案

if its possible for multiple QGLWidgets to share a single openGL context?

现在一般来说这不可能回答,因为它取决于所讨论的平台:在 X11/GLX 上,确实可以在多个可绘制对象上使用间接上下文,但是上下文只能在一个可绘制对象上激活一次。

但是:

让多个上下文共享数据也是可能的(这是推荐的方法)。在 OpenGL 的第一个版本中,这只是显示列表,因此这仍然称为列表共享。但对于当前版本的 OpenGL,这还包括纹理、像素缓冲区对象和顶点缓冲区对象。然而,帧缓冲区对象不能共享,但由于纹理可以用作 FBO 附件,所以这没什么大不了的。

QGLWidget 提供了一个直接的 API 来在 QGLWidgests 的上下文之间共享上下文数据。

关于c++ - 在 C++ 中具有单个 openGL 上下文的多个 QGLWidgets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496728/

相关文章:

c++ - 更改可警告/可等待线程的上下文

c++ - QT C++ 我可以使用自定义 mime 类型在多个应用程序上进行复制和粘贴吗?

opengl - 背面剔除 + GL_TRIANGLE_STRIP?

c++ - GL_TRIANGLE_STRIP 的 glDrawRangeElements 无法正常工作(使用 glMapBuffer)

c++ - 在哪种情况下使用特定的 STL 容器?

c++ - 从视频中提取声音

c++ - 在 OpenCV 中为我检测到的对象制作动画

android - Qt:未找到应用程序 .pro 文件,未构建 APK

c++ - 在 C++ 中传递成员函数指针

java - 在 Windows 上的小纹理上使用 MipMap 时 JVM 崩溃