OpenGL学习笔记之一 什么是OpenGL?

内容来源:LearnOpenGL CN

OpenGL到底是什么?

        一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

       OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。

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

由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议你偶尔更新一下显卡驱动。

所有版本的OpenGL规范文档都被公开的寄存在Khronos那里。有兴趣的读者可以找到OpenGL3.3的规范文档。如果你想深入到OpenGL的细节(只关心函数功能的描述而不是函数的实现),这是个很好的选择。如果你想知道每个函数具体的运作方式,这个规范也是一个很棒的参考。

       总结:

       要点一: OpenGL是一个规范而非一个API(但定义了API接口),规范由Khronos组织制定并维护

       要点二: OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值;OpenGL规范并不规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配。

      要点三:实际的OpenGL库的开发者通常是显卡的生产商。

                   Windows系统:显卡所支持的OpenGL版本都为这个系列的显卡专门开发的;

                   Apple系统:OpenGL库是由Apple自身维护的;

                   Linux系统:有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。

       

猜你喜欢

转载自blog.csdn.net/ice_ly000/article/details/80321969