在运行时加载 OpenGL 扩展
Posted
技术标签:
【中文标题】在运行时加载 OpenGL 扩展【英文标题】:Loading OpenGL extension at runtime 【发布时间】:2013-08-03 12:13:00 【问题描述】:我正在尝试获取其他 openGL 功能,例如glCreateShader(), 如许多教程中所述,在运行时使用 wglGetProcAddress。 然而,返回值为 NULL,并且不能使用与着色器相关的函数 找到了。
如何解决这个问题? 谢谢!! :-)
【问题讨论】:
【参考方案1】:这些功能由图形驱动程序提供。所以你有两个选择:
将您的图形驱动程序升级到最新版本,并希望制造商已经开发了该扩展。 将您的显卡更换为更好的显卡,该驱动程序提供所需的扩展。请注意,有许多低端显卡根本无法满足扩展的要求,因此他们的制造商永远不会提供它们。
【讨论】:
【参考方案2】:我已经解决了这个问题。 必须先创建openGL上下文,并且必须选择像素格式 并且适合您想要的扩展集。
如果您不执行上述操作,wglGetProcAddress 将找不到您的扩展。
【讨论】:
好吧,如果您阅读过wglGetProcAddress
的文档,您从一开始就知道这一点。人们,真的,阅读精美手册 (RTFM)
事实上我做了很多 RTFM,这个具体的事实没有记录在任何地方,只有在 MSDN 文档提到已经存在的像素格式时才暗示。然后我试着让它工作。请不要再花时间告诉人们如果他们阅读手册会发生什么,因为这不会带来任何贡献
来自wglGetProcAddress
参考页面,第一句:<quote>
"wglGetProcAddress 函数返回 OpenGL 扩展函数的地址以用于 当前 OpenGL渲染上下文。” </quote>
– 我认为很明显,要拥有 current 上下文,您首先必须创建一个并使其处于活动状态。以上是关于在运行时加载 OpenGL 扩展的主要内容,如果未能解决你的问题,请参考以下文章
运行 mongodb-backed node app 时无法加载 C++ bson 扩展,使用纯 JS 版本错误