SFML环境中缺少OpenGL功能

时间:2019-01-21 16:25:20

标签: c++ opengl sfml

this tutorial之后,我试图在Visual Studio环境下为使用SFML创建的OpenGL上下文管理OpenGL缓冲区。我以最新版本安装了SFML和Glew,并进行了正确的链接,并且能够使用OpenGL glClearglBeginglVertext3d之类的基元。

但是,我似乎无法调用glEnableVertexAttribArrayglBindBuffer之类的许多其他OpenGL函数,我想理解为什么。我注意到由SFML上下文设置的默认OpenGL版本是4.6,但是在khronos网站上找不到该版本的这些功能的适当文档。此外,我的Visual Studio甚至都没有将这些功能视为任何库的一部分,但是鉴于我依赖SFML / OpenGL.hpp,我可能会错过其中的一些功能。 SFML方面的文档对此主题非常重视...

谢谢!

1 个答案:

答案 0 :(得分:2)

  

我能够使用OpenGL glClear,glBegin和glVertext3d之类的基元。但是,还有很多其他OpenGL函数似乎无法调用,例如glEnableVertexAttribArray或glBindBuffer,我想理解为什么。

这样做的原因是Windows上的opengl32库仅提供OpenGL 1.1功能,其他所有功能都由图形卡驱动程序带来。为了实际访问这些功能,Windows提供了一个加载它们的功能。但是,编写所有声明并加载所有函数是一项繁重的工作(请参见OpenGL Wiki中的Load OpenGL Functions),因此存在可以为您执行此操作的库,其中一个库名为“ OpenGL扩展Wrangler库”。创建OpenGL上下文(SFML会这样做)之后,必须调用glewInit(),然后加载所有其他函数。 glew还提供了这些功能的声明,因此请确保包括glew头文件,而不是系统或SFML的opengl头文件。

相关问题