什么可以导致glCreateShader在某些点返回0?

Mas*_*ler 2 opengl

我遇到了一个非常奇怪的OpenGL错误,其中调用glCreateShader多次,然后在稍后我尝试调用它失败,返回0. glGetError之后立即调用也返回0,表示没有错误.搜索的时候,我看到有关问题glCreateShader从来没有工作,这是不是这里的情况,还有一些人提的是,它可以返回0,如果调用者之间glBeginglEnd,这我没有使用.环顾四周,我没有在调用堆栈中看到任何明显的东西,这些东西应该表明我正在使用OpenGL做一些奇怪的事情.

glGetString(GL_VERSION) 如果有帮助,返回"4.3.0 - Build 10.18.10.3977".

任何人都知道这里发生了什么?

dat*_*olf 6

没有OpenGL上下文绑定到调用线程.您没有指定您所使用的操作系统,但您可以wglGetCurrentContext在Windows glXGetCurrentContext上使用X11(很可能是Linux)来查询当前绑定的上下文(或根本不绑定).

如果任一函数返回,NULL则没有OpenGL上下文,您将获得您描述的行为.