c++ - 加载 OpenGL > 1.1 函数 Windows

标签 c++ windows opengl

我在使用 MSVS 2013 设置 OpenGL 时遇到问题。我知道我的 Windows 上的 opengl32.dll 位于 C:\Windows\System32 的平台是 OpenGL 1.1 的实现。

我想要做的是加载较新的 OpenGL > 1.1 函数,例如 glBindBufferglBufferData。我读到可以使用 wglGetProcAddress 获取指向该函数的指针。使用此函数时,返回的指针始终为 null,使用 GetProcAddress(OpenGL32DLL, "...") 的 dll 中的所有原始函数都可以正常工作,除了新函数似乎无法加载。

我希望这里的任何人都可以帮助我完成我的设置并指出我做错了什么或者我是否遗漏了什么。

我们开始吧:

  • 我已经下载了 OpenGL Extensions Viewer 4.4,它指出我能够完美地运行到 OpenGL 2.1 应该足以使用或加载 glBindBufferglBufferData

  • 我下载了 Microsoft SDKs/v7.1,其中包含 header :gl/glu.hgl/gl.h;我还下载了 GLEXT 扩展 API 来自 here并链接 glext.lib + 包含 header 。

  • 链接器中的文件:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\OpenGL32.Lib

C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\GlU32.Lib

C:\Users\user\Desktop\glext\lib\glext.lib

  • CPP 文件包括:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Include -> GL.h, GLU.h

C:\Users\user\Desktop\glext\include -> glcorearb.h, glext.h, wglext.h

最佳答案

与其自己处理所有这些细节,我建议您自己获取一份 GLEW (http://glew.sourceforge.net/),它以标准方式为您处理所有这些。我目前在几个已发布的产品上使用它没有问题。

在您的示例中,您可以执行以下操作:

if (GL_ARB_multi_bind) {
    //glBindBuffer is available.
}

(当然,在调用 glewInit() 之后,可能使用 glewExperimental = TRUE; - 请参阅文档了解详细信息。)

关于c++ - 加载 OpenGL > 1.1 函数 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37763962/

相关文章:

c++ - 在循环中使用 isstringstream 作为分词器

用于对二维坐标数组进行排序并计算边界框的 C++ 函数

c++ - 自定义流缓冲区能否在程序退出时和请求输入时自动刷新?

c++ - 如何使用 WM_* 消息调整窗口大小

c - 从 C 中的麦克风获取原始数据 block

c++ - 对 vector 进行排序而不改变原始 vector 的最佳方法是什么?

windows - Vista/win7应用程序音量控制界面

c++ - 在 ubuntu 中编译 GLUT 时出错

c++ - 在 OSX 中链接 GLFW 的问题

c++ - 错误:不支持GLSL 3.30。支持的版本为:1.10、1.20、1.30、1.00 ES,3.00 ES,3.10 ES和3.20 ES