wglGetProcAddress返回NULL

时间:2014-02-14 01:56:20

标签: c++ opengl wgl

我试图使用WGL_ARB_pbuffer进行OpenGL的屏幕外渲染,

但我在初始化期间失败了。

这是我的代码。

wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
if(!wglGetExtensionsStringARB) return;
const GLubyte* extensions = (const GLubyte*) wglGetExtensionsStringARB(wglGetCurrentDC());

所以实际上这会在第2行结束,因为wglGetExtensionsStringARB得到了NULL。

我不知道为什么wglGetProcAddress不起作用。

我收录了“wglext.h”,我也在标题下定义如下。

PFNWGLGETEXTENSIONSSTRINGARBPROC    pwglGetExtensionsStringARB = 0;
#define wglGetExtensionsStringARB   pwglGetExtensionsStringARB

为什么我不能像我想的那样使用wglGetProcAddress?

1 个答案:

答案 0 :(得分:12)

wglGetProcAddress需要OpenGL渲染上下文;在致电wglCreateContext之前,您需要致电wglMakeCurrentwglGetProcAddress。如果您尚未设置OpenGL上下文,wglGetProcAddress将始终返回NULL。如果您还不确定是否还有OpenGL上下文(例如,如果您使用的是第三方框架/库),请致电wglGetCurrentContext并检查以确保它没有返回NULL