在开始这段旅程之前我们先了解一下OpenGL到底是什么。
一般它被认为是一个应用程序编程接口(ApplicationProgrammingInterface,API),它包含了一系列可以操作图形、图像的方法。
然而,OpenGL本身并不是一个API,仅仅是一个规范,由Khronos组织制定并维护。
OpenGL严格规定了每个函数该如何执行,以及它们该如何返回。
至于内部具体每个函数是如何实现的,将由OpenGL库的开发者自行决定(注:这里开发者是指编写OpenGL库的人)。
因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。
实际的OpenGL库的开发者通常是显卡的生产商。
每个你购买的显卡都会支持特定版本的OpenGL,通常是为一个系列的显卡专门开发的。
当你使用苹果系统的时候,OpenGL库是由苹果自身维护的。
在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。
这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。
。
。
。
1