>我有visual studio c ++ express和NVIDIA GeForce 7900 GS。我正在使用glew来获取openGL扩展。调用glGenBuffers崩溃为其NULL指针tho。在我进行调用之前,我有一个开放的GL上下文(wglGetCurrentContext()!= NULL)。我在通话前打电话给glewInit()。 glewGetString(GLEW_VERSION)返回GLEW_VERSION_1_5。我究竟做错了什么 ?这张卡太旧了吗?是司机吗?
答案 0 :(得分:5)
请记住在代码中进行glewInit()
调用,以便获得有关GL函数的有效指针。
希望它有所帮助。
答案 1 :(得分:1)
如果没有看到你的代码就很难说,但是你试图做的事情似乎可以通过使用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无耻地复制/粘贴,但它显示了我试图展示的功能。
答案 2 :(得分:0)
我实际上遇到了GLEW这个问题。对我来说,它使glGenerateMipmap的函数指针无效。我通过简单地恢复指向适当函数的指针来修复它。这是我在Linux中的例子:
glGenerateMipmap = (void(*)(GLenum))
glXGetProcAddressARB((GLubyte*)"glGenerateMipmap");
glXGetProcAddress有一个WGL等价物;我只是不记得我头顶的名字了。尝试使用此方法手动还原功能。如果您遇到许多的null函数,那么在您的设置过程中肯定会出现问题。我记得必须恢复的唯一其他函数是glGenVertexArrays,glBindVertexArray和glDeleteVertexArrays。如果你的glGenBuffers是null,那么glBindBuffer和glDeleteBuffers也是空的。 :(
答案 3 :(得分:0)
通过检查glGetString返回的字符串(GL_EXTENSIONS)来测试是否实际支持所需的扩展名;如果它不存在,你就知道是什么导致了你的问题。
答案 4 :(得分:0)
您需要调用具有有效上下文的glewInit()帖子。在你调用glfwMakeContextCurrent(myWindow)之后,就在glew的世界里;