我正在创建一个类似 CAD 的应用程序(基于 Qt),它将是一个多文档界面,每个文档将包含大约 5 个视口(源自 QGLWidget)。因此,我需要在整个应用程序中共享我的平面着色器,然后在每个文档(即 5 个视口)之间共享 3D 资产(存储为 VBO 的模型)。
我想只要我分享着色器程序和 VBO GLuint 地址,所有这些都会自动工作 - 它不会。我认为因为每个视口/上下文在显卡上都有自己的地址空间,如果有人知道更好,请告知!
我希望在应用程序启动时编译着色器,但这证明很困难,因为我需要一个有效的 QGLWidget 才能让 OpenGL 预先进入有效状态。但是由于我需要共享 QGLWidgets(通过它们的构造函数)以让它们共享资源,因此需要在实例化其他的之前创建并显示一个。但这是非常不切实际的,因为要同时向用户显示多个视图。
这一定比我想象的要容易,因为它几乎不是开创性的东西,但我真的很挣扎——谁能指出我正确的方向?
谢谢,凸轮