无法在InitializeGL和paintGL之外调用OpenGL相关功能

Car*_*ier 2 c++ opengl qt

如标题所示,在Qt内部,我无法使用或调用QGLWidget函数之外的任何OpenGL函数,例如initializeGL()paintGL()

QMainWindow调用班级的某个插槽后,我试图构建3D模型。一切似乎都可以正常工作,所有顶点都已加载,但是,当我尝试绘制模型时,出现了NULL引用异常。当提供的顶点太少时,通常会发生这种情况。

当我在中使用它时,相同的构建函数也可以工作initializeGL()

Jag*_*oly 5

这实际上非常简单:在这些功能之外,QGLWidget的上下文不是最新的。您可以通过调用QGLWidet :: makeCurrent()使上下文成为当前上下文。解决此问题的一种更好的方法是将所有GL函数推迟到paintGL内调用,因为这可以确保上下文是最新的,并且您不必冒险通过更改上下文而与其他任何openGL东西混淆。