我有一个使用 aQOpenGLWidget
来呈现内容的 Qt OpenGL 应用程序。在另一个类(我们称之为Resources
)中,我想为这个小部件创建 OpenGL 资源,如 VBO、VAO、着色器程序等。此创建方法不是由QOpenGLWidget
调用,而是由外部调用者调用。
出于某种原因,我的应用程序中存在两个 OpenGL 上下文(一个可能用于 GUI 内容,另一个用于QOpenGLWidget
. 因此,当调用资源创建方法时,我无法确定正确的上下文是否处于活动状态。所以当我打电话时
QOpenGLVertexArrayObject vao;
vao.create();
在 Resources 类中,我不能确定这个 VAO 是在正确的上下文中创建的。Resources 类无权访问小部件。因此,context.makeCurrent()
不能调用(因为我不知道表面)。
是否有直接的方法来指定应在其上创建资源的上下文?将表面存储在资源文件中(连同上下文)似乎很不整洁。