Qt 为什么函数glewInit()应该写在initializeGL()中

Qt 为什么函数glewInit()应该写在initializeGL()中,qt,opengl,glew,Qt,Opengl,Glew,我在下面写代码 glewInit(); glGenBuffers(2,buffers); 此代码在initializeGL()之前调用。它将导致访问冲突错误 initializeGl()中的函数glewInit()。glGenBuffers()工作正常。glewInit()需要绑定有效的OpenGL上下文并准备好运行 glGenBuffers(以及其他函数)由glewInit()初始化。如果GLEW无法成功初始化,例如,因为周围没有有效的OpenGL上下文,则glGenBuffers包含一个空

我在下面写代码

glewInit();
glGenBuffers(2,buffers);

此代码在initializeGL()之前调用。它将导致访问冲突错误 initializeGl()中的函数glewInit()。glGenBuffers()工作正常。

glewInit()
需要绑定有效的OpenGL上下文并准备好运行

glGenBuffers
(以及其他函数)由
glewInit()初始化。如果GLEW无法成功初始化,例如,因为周围没有有效的OpenGL上下文,则
glGenBuffers
包含一个空指针,任何试图使用它的人都会使程序崩溃


在Qt中,OpenGL上下文只有在调用
initializeGL
时才可用(实际上也只有以
…GL
结尾的其他成员方法,在这些方法之外,上下文可能不会被绑定)。

您的
initializeGL()在哪里
正在调用的函数?它是从QGLWidget继承的函数。为了显示场景,我只继承QGLWidget并重写三个函数initializedGL、paintGL和resizeGL。“它将导致访问冲突错误”,您能详细说明一下吗
glewInit()
只需要一个有效的上下文,这就是它在
initializeGL()
中工作的原因。