2

我正在使用wlgGetProcAddress使用创建的上下文来获取函数wglCreateContext。我已经设置了上下文wglMakeCurrent。我得到了一个有效的函数指针glGetStringi,但我得到NULLglGetString. 我认为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。

4

1 回答 1

7

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

于 2014-04-02T04:09:43.520 回答