wglGetProcAddress 返回 NULL
Posted
技术标签:
【中文标题】wglGetProcAddress 返回 NULL【英文标题】:wglGetProcAddress returning NULL 【发布时间】:2014-04-02 03:47:42 【问题描述】:我使用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。
【问题讨论】:
您正在创建的上下文的配置文件是什么? 【参考方案1】: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
【讨论】:
以上是关于wglGetProcAddress 返回 NULL的主要内容,如果未能解决你的问题,请参考以下文章
为啥 WCF/JSON 不为 null 返回值返回“null”?
places.getLatLng() 返回 null 虽然 places.getName() 没有返回 null