我正在使用 wlgGetProcAddress
获取使用 wglCreateContext
创建的上下文的函数。我已经使用 wglMakeCurrent
设置了上下文。我得到了 glGetStringi
的有效函数指针,但我得到了 glGetString
的 NULL
。我认为 glGetString
和 glGetStringi
是在同一版本的 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。
最佳答案
glGetStringi
的引入比 1.0 晚得多 - 我相信它是 3.3。更糟的是,在核心 3.3+ 配置文件中,您不能使用 glGetString(GL_EXTENSIONS)
,但需要使用 glGetStringi
,这对于低配置文件版本不可用。
MSDN 文档说 wglGetProcAddress
只返回扩展函数的地址。在他们的术语中,“扩展”是 GL 1.1 中没有的一切。
关于c++ - wglGetProcAddress 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801188/