窗口管理
老产品:GLUT/FREEGLUT
替代品:GLFW
GLUT太老了,且该项目已经被废弃。它的许可证禁止任何人发布修改后的库代码。
FREEGLUT完全兼容GLUT,是GLUT的代替品,开源,功能齐全。但是bug太多。稳定性也不好(不是我说的啊)。
GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入,这正是我们需要的。
函数加载
老产品:GLEW
替代品:GLAD
GLEW是一个基于OpenGL图形接口的跨平台的C++扩展库。GLEW能自动识别当前平台所支持的全部OpenGL高级扩展函数。只要包含glew.h头文件,就能使用gl,glu,glext,wgl,glx的全部函数。GLEW支持目前流行的各种操作系统。GLEW有一个缺陷是它并没有提供一种方式可以屏蔽OpenGL Legecy函数的调用,尽管可以使用Core profile的方式,但是代码中仍然存在 glVetex、glBegin这样固定管线OpenGL的函数调用(虽然它们在Core Profile模式下没有任何作用),看起来不那么统一。要做到这一点可以使用下面的GLAD。
GLAD并不是一个OpenGL的库,它是一个网络服务,提供了根据我们选择的OpenGL要求生成OpenGL的导出库的源码,可以访问它的网站:GLAD Service,进入之后想根据里面提供的选项,像选菜单一样选择需要的OpenGL 版本和Profile,之后点击生成便可生成对应版本OpenGL。这样做让glad.h中仅仅只包含我们想要扩展的头文件,例如在设置3.3 + CoreProfile版本之后,可以严格控制头文件中只有这些内容,所以凡是代码中有Legecy OpenGL的调用都会在编译的时候给出错误提示。
项目开发组合
- FREEGLUT+GLEW
- GLFW+GLEW
- GLFW+GLAD
其中组合1是经典,组合3比较新潮。
参考
https://blog.csdn.net/libaineu2004/article/details/105879521
https://blog.csdn.net/csxiaoshui/article/details/79032464
网友评论