【问题标题】:What can cause glCreateShader to return 0 at some points?什么会导致 glCreateShader 在某些时候返回 0?
【发布时间】:2015-07-14 20:33:41
【问题描述】:

我遇到了一个非常奇怪的 OpenGL 错误,调用 glCreateShader 多次工作,然后在稍后我尝试调用它并失败,返回 0。之后立即调用 glGetError 也返回 0 ,表示没有错误。环顾四周,我看到questions about glCreateShader never working, 这不是这种情况,并且一些人提到如果在glBeginglEnd 之间调用它可以返回0,我没有使用它。环顾四周,我在调用堆栈中没有看到任何明显的东西表明我在使用 OpenGL 做一些奇怪的事情。

glGetString(GL_VERSION) 返回“4.3.0 - Build 10.18.10.3977”,以防万一。

有人知道这里发生了什么吗?

【问题讨论】:

    标签: opengl


    【解决方案1】:

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

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

    【讨论】:

    • 这就是问题所在,好吧。有问题的代码应该只在主要威胁上运行,但由于错误,它在工作人员威胁中被调用,并且调用堆栈足够深,我没有立即注意到。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-08-13
    相关资源
    最近更新 更多