当使用glew时,glGenBuffers为NULL,给出0x0000000访问冲突

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

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

希望能帮助到你。

没有看到你的代码,这将是很难说,但你试图做的似乎可以通过使用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网站无耻地复制/粘贴,但它显示我试图展示的功能。

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

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

有一个WGL相当于glXGetProcAddress; 我只是不记得我的头顶上的名字。 尝试使用此方法手动恢复功能。 如果遇到很多无效的函数,那么在你的设置过程中肯定有错误。 我记得唯一需要恢复的其他功能是glGenVertexArrays,glBindVertexArray和glDeleteVertexArrays。 如果你的glGenBuffers为null,那么glBindBuffer和glDeleteBuffers也是null。 🙁

通过检查glGetString(GL_EXTENSIONS)返回的字符串来测试是否实际支持所需的扩展。 如果不在那里,你知道是什么原因造成你的问题。

你需要调用glewInit()后有一个有效的上下文。 在glew世界中,在你调用glfwMakeContextCurrent(myWindow)之后,