>我有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)之后,