QOpenGLWidget与共享的OpenGL上下文?

扬·吕格

我有一个现有的OpenGL上下文,我想与一个新的QOpenGLWidget共享。

我知道我可以这样做:

  1. 创建QOpenGLWidget
  2. 等待直到调用initializeGL并保存上下文
  3. 创建新的QOpenGLContext,并使其与保存的上下文共享

但是,我想按其他顺序进行:

  1. 创建QOpenGLContext
  2. 创建QOpenGLWidget,提供现有上下文并使其共享

这可能吗?

Steventaitinger

编辑,我对QOpenGLFramebufferObject的了解不多,所以请忽略我以前的答案内容。

在QOpenGLWidget中,它始终将其上下文设置为与其最接近的顶级窗口(如果是窗口,则与其自身)共享。您的理解是正确的,如果不将其子类化以完全改变其工作方式,就无法更改QOpenGLWidget成员上下文。在QOpenGLWidgetPrivate :: initialize()函数中,上下文是从defaultFormat和顶级shareContext初始化的。如果要在创建QOpenGLWidget之前使用上下文,则必须通过全局共享上下文。在创建QGuiApplication对象之前,需要设置Qt :: AA_ShareOpenGLContexts。

您需要等待QGuiApplication初始化全局上下文,然后才能尝试访问它。由于global_share_context是QOpenGLContext类的静态成员,因此您可以创建任何QOpenGLContext并通过context.globalShareContext()访问它。然后只需删除您的初始QOpenGLContext。您创建的任何QOpenGLWidget将自动与该上下文共享。如果在create()特殊上下文之前可以找到指向全局共享上下文的指针的方法,则可以与全局上下文共享,并且共享是双向的。共享是通过彼此共享的整个共享上下文组进行的,因此与一个上下文进行的任何共享都与整个组共享。

另外,我不知道这是否会改变,但是QOpenGLContext表示它也可以共享帧缓冲区对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与OpenGL ES共享egl上下文

来自分类Dev

OpenGL多线程/共享上下文和glGenBuffers

来自分类Dev

OpenGL可以与其他版本共享上下文

来自分类Dev

在 2 个 OpenGL 上下文之间共享纹理

来自分类Dev

用于在fbo中渲染以在许多QOpenGLWidget中显示的全局OpenGL上下文

来自分类Dev

OpenGL上下文(libgdx)

来自分类Dev

与GLFW3在OpenGL上下文之间共享纹理不起作用

来自分类Dev

Opengl和opencl在单个共享上下文中只能使用1个内核

来自分类Dev

与包含的模板django共享上下文

来自分类Dev

在Linux上与GLUT共享上下文

来自分类Dev

测试之间共享上下文

来自分类Dev

单个OpenGL上下文,多个视图

来自分类Dev

FreeGlut OpenGL上下文版本

来自分类Dev

Python + OpenGL上下文缩进块

来自分类Dev

Android中的OpenGL上下文数量

来自分类Dev

rspec共享示例vs共享上下文

来自分类Dev

rspec共享的示例vs共享的上下文

来自分类Dev

我是否可以在OpenGL 2.1的多个共享上下文中同时从同一缓冲区对象进行渲染?

来自分类Dev

QOpenGLContext 和本机 OpenGL 上下文之间的纹理共享不适用于 Mesa 驱动程序

来自分类Dev

在Nashorn中跨上下文共享本机JavaScript对象

来自分类Dev

在Django中的视图之间共享上下文?

来自分类Dev

无法释放由共享上下文创建的纹理

来自分类Dev

在上下文之间共享常见的依赖关系

来自分类Dev

如何在上下文之间共享集团

来自分类Dev

共享首选项VS上下文?

来自分类Dev

共享两个视图的数据上下文

来自分类Dev

在Nashorn中跨上下文共享本机JavaScript对象

来自分类Dev

Android:使用共享 EGL 上下文时内存泄漏

来自分类Dev

在 spring 5 中与孩子共享父 spring 上下文

Related 相关文章

热门标签

归档