OpenGL是什么
通常的理解是一个API,包含了一些列可以操作图形、图像的函数,然而OpenGL本身不是一个API,它仅仅是由Khronos组织制定并维护的一个规范。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值,内部实现由OpenGL库的开发者自己决定。
之前,一直以为OpenGL是由一个组织统一开发维护的,现在了解到OpenGL仅仅声明了一系列函数,具体的实现由开发者(显卡厂商)来实现。
OpenGL的渲染模式
- 立即渲染模式
- 核心模式
立即渲染(固定管线渲染)模式绘制图形比较简单,开发者很少能控制OpenGL,比较简单容易使用和理解,但是效率太低;
核心模式提高了灵活性,给予了开发者很大的自由度、灵活性和效率,但是需要使用者真正理解OpenGL和图形编程,有一定难度;
从OpenGL3.2开始,规范文档废弃了立即渲染模式,鼓励开发者使用核心模式进行开发。
状态机
OpenGL是由一系列变量描述的状态机(State Machine),OpenGL的状态通常被称为OpenGL的上下文(Context),使用以下状态修改OpenGL状态:
- 设置选项
- 操作缓存
- 使用当前OpenGL上下文来渲染
只要记住OpenGL本质上是一个大状态机,就能更容易理解它的大部分特性