OpenGL入门——浅谈OpenGL
OpenGL入门了很多次,但是一旦踏出一段时间,就又啥也不懂,从头开始。
以前只是需要用的时候草草学一下怎么用,会套用就行,没让自己停下来认真思考消化......
短时间看效率高,长时间看效率低,因为每次使用都得重新搜索学习。
所以想在再次入门的时候记录点东西,整理一下自己的思绪,以后有时间再再再无限次回顾复盘!
OpenGL(Open Graphics Library)一般被看作是用于渲染2D、3D矢量图形的API(Application Programming Interface, 应用程序编程接口),但其实它不是一个API,它只是一个被严格规定了每个函数该如何运行,以及它们的输出值的规范。至于内部的具体实现方法是由编写openGL库的人决定的,只要功能和输出值是与规范一致的即可。
实际openGL库的开发者通常是显卡的生产商,我们使用的显卡所支持的openGL版本,就是专门为这个系列显卡开发的。所以OpenGL允许使用不同的方式实现,只要其表现行为(功能和输出值)与规范规定的一致。
当产生与规范不一致的bug时,只要更新显卡驱动可能就解决了,可见时常更新显卡驱动是有必要的。
最早接触opengl的时候还是立即渲染模式(Immediate mode,固定渲染管线),这个模式简单易用,因为它把大多数功能用库隐藏起来了,但也正因如此,使得它灵活性差,降低了效率。开发人员还是更希望能够自己掌握绘制渲染的细节,所以也就出现了核心模式(Core-profile)。核心模式完全移除了旧特性,当我们在这个模式下使用已废弃的函数(如:固定功能渲染的glBegin、glEnd、glVertex...)时就会报错并终止绘制,这迫使我们使用现代函数。虽然现代函数比较难学,但它灵活性更高、效率更高!所以还是值得去努力学习的,更重要的是它更有益于深入理解图形编程。
在大势所趋的情况下,我打算再次重新认真地学一下如何在核心模式下使用现代函数进行OpenGL编程。