我在使用 MSVS 2013 设置 OpenGL 时遇到问题。我知道我的 Windows 上的 opengl32.dll
位于 C:\Windows\System32
的平台是 OpenGL 1.1 的实现。
我想要做的是加载较新的 OpenGL > 1.1 函数,例如 glBindBuffer
和 glBufferData
。我读到可以使用 wglGetProcAddress
获取指向该函数的指针。使用此函数时,返回的指针始终为 null,使用 GetProcAddress(OpenGL32DLL, "...")
的 dll 中的所有原始函数都可以正常工作,除了新函数似乎无法加载。
我希望这里的任何人都可以帮助我完成我的设置并指出我做错了什么或者我是否遗漏了什么。
我们开始吧:
我已经下载了 OpenGL Extensions Viewer 4.4,它指出我能够完美地运行到 OpenGL 2.1 应该足以使用或加载
glBindBuffer
和glBufferData
。我下载了 Microsoft SDKs/v7.1,其中包含 header :
gl/glu.h
和gl/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/