cma*_*t85 6 opengl qt vbo qglwidget
我正在创建一个类似CAD的应用程序(基于Qt),它将是一个多文档界面,每个文档将包含大约5个视口(从QGLWidget派生).因此,我需要在整个应用程序中共享我的平面着色器,然后在每个文档(即5个视口)之间共享3D资源(存储为VBO的模型).
我想只要我在着色器程序和VBO GLuint地址共享所有将自动工作 - 它没有.我想因为每个视口/上下文在显卡上都有自己的地址空间,如果有人知道更好请告知!
我想在应用程序启动时编译着色器,但这很难实现,因为我需要一个有效的QGLWidget来预先将OpenGL置于有效状态.但是,由于我需要共享QGLWidgets(通过它们的构造函数)以使它们共享资源,因此需要先创建并显示其他资源,然后才能实例化其他资源.但这是非常不切实际的,因为多个视图一次显示给用户.
这一定比我说的要容易,因为它不是突破性的东西,但我真的很挣扎 - 有人能指出我正确的方向吗?
谢谢,Cam
Str*_*ger 12
以下是通常的CAD/MDI应用程序正在执行的操作:
他们创建了一个共享的上下文,可以很好地共享资源.
他们wglShareLists
在创建新的OpenGL渲染上下文时使用它来访问共享上下文的资源ID.
wglShareLists
可用于共享VBO,纹理,着色器等,不仅显示列表(共享DL是传统用法,因此是函数名称).
我不记得您是否需要使用共享上下文创建资源,或者您是否可以在任何上下文中创建它们.
如果你不在窗户上,请看glXCreateContext
.这应该会让你走上正轨.
编辑:
我看过Qt,看起来它被成员抽象了QGLContext::create
.