wglGetProcAddress返回NULL

时间:2014-04-02 03:47:42

标签: c++ c opengl wgl

我正在使用wlgGetProcAddress来使用wglCreateContext创建的上下文来获取函数。我已使用wglMakeCurrent设置了上下文。我得到了glGetStringi的有效函数指针,但NULL得到了glGetString。我认为glGetStringglGetStringi是在相同版本的OpenGL(1.0)中引入的。我有什么想法得到这个NULL

const GLubyte* (*glGetString)(GLenum);
const GLubyte* (*glGetStringi)(GLenum, GLuint);
glGetString = reinterpret_cast<decltype(glGetString)>(wglGetProcAddress("glGetString"));
glGetStringi = reinterpret_cast<decltype(glGetStringi)>(wglGetProcAddress("glGetStringi"));

如果重要,我有一台驱动程序版本为13.251.0.0的Radeon HD 7950。

1 个答案:

答案 0 :(得分:6)

glGetStringi的引入要晚于1.0 - 我相信它是3.3。更糟糕的是,在核心3.3+配置文件中,您无法使用glGetString(GL_EXTENSIONS),但需要使用glGetStringi,这对于较低配置文件版本不可用。

MSDN文档说wglGetProcAddress只返回扩展功能的地址。在他们的术语中,“扩展”是GL 1.1中没有的所有内容。

请阅读https://www.opengl.org/discussion_boards/showthread.php/168281-Can-t-get-wglGetProcAddress-to-work-in-opengl-3-1