【问题标题】:glGenBuffers is NULL giving a 0x0000000 access violation when using glewglGenBuffers 为 NULL,在使用 glew 时给出 0x0000000 访问冲突
【发布时间】:2011-02-16 20:53:38
【问题描述】:

> 我有 Visual Studio C++ Express 和 NVIDIA GeForce 7900 GS。我正在使用 glew 来获取 openGL 扩展。调用 glGenBuffers 会崩溃,因为它是一个 NULL 指针。在我拨打电话之前,我有一个开放的 GL 上下文( wglGetCurrentContext() != NULL )。我在通话前打电话给 glewInit() 。 glewGetString( GLEW_VERSION ) 正在返回 GLEW_VERSION_1_5。我究竟做错了什么 ?卡太旧了?是司机吗?

【问题讨论】:

  • 您是否将 NULL 指针传递给 glGenBuffers?
  • 不绝对不是 -> Gluint vbo; glGenBuffers(1, &vbo);
  • 你能检查一下指向 glGenBuffers 的函数指针是否为零吗?

标签: windows opengl access-violation


【解决方案1】:

记得在您的代码中调用glewInit(),以便获得指向 GL 函数的有效指针。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    如果没有看到您的代码,很难判断,但您尝试做的事情似乎可以通过使用 GLee 得到很大帮助。它旨在加载所有当前扩展,您可以检查支持的内容,例如:

    #include <gl\GLee.h>          // (no need to link to gl.h) 
    
    ...
    
    if (GLEE_ARB_multitexture)    //is multitexture support available?
    {
      glMultiTexCoord2fARB(...);  //safe to use multitexture
    }
    else
    {
     //fallback
    }
    

    以上内容是从GLee site 无耻地复制/粘贴的,但它显示了我想要展示的功能。

    【讨论】:

    • 但是我使用 glew 肯定就足够了?
    • @Mark:从来没有用过glew,所以我不能确定。我只是提供 GLee 作为替代方案,因为它对我来说非常效果很好。一些似乎对 glew 有问题的人没有使用 GLee (nvnews.net/vbulletin/showthread.php?t=154581)。
    【解决方案3】:

    您需要调用 glewInit() 发布具有有效上下文的帖子。在你调用 glfwMakeContextCurrent(myWindow); 之后,在 glew 的世界中就是这样。

    【讨论】:

      【解决方案4】:

      我实际上遇到了 GLEW 的这个问题。对我来说,它使 glGenerateMipmap 的函数指针无效。我通过简单地将指针恢复到适当的函数来修复它。这是我在 Linux 中的示例:

      glGenerateMipmap = (void(*)(GLenum))
          glXGetProcAddressARB((GLubyte*)"glGenerateMipmap");
      

      glXGetProcAddress 有一个 WGL 等价物;我只是不记得我头顶上的名字。尝试使用此方法手动恢复功能。如果您遇到 许多 为 null 的函数,那么您的设置过程肯定有问题。我记得唯一需要恢复的其他函数是 glGenVertexArrays、glBindVertexArray 和 glDeleteVertexArrays。如果您的 glGenBuffers 为空,则 glBindBuffer 和 glDeleteBuffers 也很可能为空。 :(

      【讨论】:

      • wglGetProcAddress 是名称。
      【解决方案5】:

      通过检查 glGetString(GL_EXTENSIONS); 返回的字符串来测试是否实际支持所需的扩展。如果它不存在,您就知道是什么导致了您的问题。

      【讨论】:

      • 人们对这样做的根本原因一无所知。只知道不枚举。
      猜你喜欢
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多