无法在InitializeGL和paintGL之外调用OpenGL相关函数

Unable to call OpenGL related functions outside of InitializeGL and paintGL

本文关键字:OpenGL 调用 函数 InitializeGL paintGL      更新时间:2023-10-16

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

在调用了QMainWindow类中的一个插槽后,我正在尝试构建一个3D模型。一切似乎都很好,所有的顶点都被加载了,但是,当我尝试绘制模型时,我得到了一个NULL引用异常;最常见的情况是,当提供的顶点太少时。

当我在initializeGL()中使用它时,同样的构建功能也起作用。

这实际上很简单:在这些函数之外,QGLWidget的上下文不是最新的。您可以通过调用QGLWidet::makeCurrent((使上下文成为当前上下文。解决这一问题的一个更好的方法是推迟将任何GL函数调用到paintGL中,因为这可以确保上下文是最新的,并且您不会因为更改上下文而冒着干扰任何其他openGL内容的风险。