OpenGL 本身并不是一个 API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现的,将由 OpenGL 库的开发者自行决定。因为 OpenGL 规范并没有规定实现的细节,具体的 OpenGL 库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。

实际的 OpenGL 库的开发者通常是显卡的生产商。显卡所支持的 OpenGL 版本都为这个系列的显卡专门开发的。当你使用 Apple 系统的时候,OpenGL 库是由 Apple 自身维护的。在 Linux 下,有显卡生产商提供的 OpenGL 库,也有一些爱好者改编的版本。这也意味着任何时候 OpenGL 库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。

所有版本的 OpenGL 规范文档都被公开的寄存在 Khronos 那里。OpenGL3.3(学习版本)的规范文档。

参考:

https://zhuanlan.zhihu.com/p/373735079