【问题标题】:Loading OpenGL extension at runtime在运行时加载 OpenGL 扩展
【发布时间】:2013-08-03 12:13:00
【问题描述】:

我正在尝试获取其他 openGL 功能,例如glCreateShader(), 如许多教程中所述,在运行时使用 wglGetProcAddress。 然而,返回值为 NULL,并且不能使用与着色器相关的函数 找到了。

如何解决这个问题? 谢谢!! :-)

【问题讨论】:

    标签: c++ winapi opengl


    【解决方案1】:

    这些功能由图形驱动程序提供。所以你有两个选择:

    • 将您的图形驱动程序升级到最新版本,并希望制造商已经开发了该扩展。
    • 将您的显卡更换为更好的显卡,该驱动程序提供所需的扩展。

    请注意,有许多低端显卡根本无法满足扩展的要求,因此他们的制造商永远不会提供它们。

    【讨论】:

      【解决方案2】:

      我已经解决了这个问题。 必须先创建openGL上下文,并且必须选择像素格式 并且适合您想要的扩展集。

      如果您不执行上述操作,wglGetProcAddress 将找不到您的扩展。

      【讨论】:

      • 好吧,如果您阅读过wglGetProcAddress 的文档,您从一开始就知道这一点。人们,真的,阅读精美手册 (RTFM)
      • 事实上我做了很多 RTFM,这个具体的事实没有记录在任何地方,只有在 MSDN 文档提到已经存在的像素格式时才暗示。然后我试着让它工作。请不要再花时间告诉人们如果他们阅读手册会发生什么,因为这不会带来任何贡献
      • 来自wglGetProcAddress 参考页面,第一句:<quote> "wglGetProcAddress 函数返回 OpenGL 扩展函数的地址以用于 当前 OpenGL渲染上下文。” </quote> – 我认为很明显,要拥有 current 上下文,您首先必须创建一个并使其处于活动状态。
      猜你喜欢
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      相关资源
      最近更新 更多