opengl是什么?
OpenGL只有框架没有实现,换句话说就是OpenGL只有函数声明没有源文件实现,类似于接口和虚函数。所有的实现是显卡生产商提供。比如NVIDIA或者AMD就要自己实现OpenGL函数内容,所以不同的生产商可以对自己的产品提供优化,毕竟代码是自己写的。
OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代)。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数
不同库及其区别
glut
opengl的工具包,隐藏平台之间的差别与细节,提供提供统一的方法来处理事件,消息等
版本太老了,理应被时代淘汰;,现在几乎没人用
freeglut
freeglut完全兼容glut,是glut的代替品
glew
glut或者freegult主要是OpenGL 1.0的基本函数功能;glew是使用OpenGL 2.0之后的一个工具函数
glew包含了OpenGL所需的核心
glfw
类似于统一opengl的窗口,窗口管理与glut类似
glfw的开发目的是用于替代glut的。
freeglut :bug太多
glut:太老了
总之,glfw是glut/freegult的升级和改进
glad
glad是继gl3w,glew之后,当前最新的用来访问OpenGL规范接口的第三方库。简单说glad是glew的升级版
结论
窗口管理
老产品:glut/freeglut
替代品:glfw
函数加载
老产品:glew
替代品:glad
项目开发,通常有三种组合
(1)freeglut+glew
(2)glfw+glew
(3)glfw+glad
其中组合1是经典,组合3比较新潮。
参考
1、https://blog.csdn.net/libaineu2004/article/details/105879521 知识
2、https://blog.csdn.net/LYKymy/article/details/83036654 教程系列