OpenGL是Khronos组织(https://www.khronos.org/)制定并且维护的规范,这个规范严格规定了每个操作图形、图形的函数该如何执行,以及它们的输出值,但并不关注函数本身如何实现。函数具体如何实现由OpenGL库的开发者(一般都是显卡的生产商)来决定。
OpenGL本身是一个状态机,也就是说它会一直按照某种特定的方式和参数运行,直至改变参数或者状态的时候,它会改变当前状态进入另一个状态(简单例子就是画点和线,设置为画点的时候会每帧不断地去画点,直至设置为画线,然后下一帧又开始不断地画线)。
OpenGL基于C语言进行开发,但是因为C语言不易被翻译到其他的高级语言,所以OpenGL开发的时候引入了包含“对象(Object)”的一些抽象层,方便进行渲染的时候数据赋值保存等。
立即渲染模式(固定渲染管线):
优势:
- 绘制图形方便
- 容易使用和理解
劣势:
- 效率低下
- 功能大多被库隐藏起来,开发者*度不高
- 抽象掉了一些细节导致很难让人把握OpenGL具体是如何运作的
核心模式:
优势:
- 使用现代函数,灵活性和效率更高
- 可以深入理解图形编程
劣势:
- 学习成本提升