- 扩展
OpenGL的一大特性就是对扩展(Extension)的支持,当一个显卡公司提出一个新特性或者渲染 上的大优化,通常会以扩展的方式在驱动中实现。如果一个程序在支持这个扩展的显卡上运行, 开发者可以使用这个扩展提供的一些更先进更有效的图形功能。通过这种方式,开发者不必等待 一个新的OpenGL规范面世,就可以使用这些新的渲染特性了,只需要简单地检查一下显卡是否 支持此扩展。通常,当一个扩展非常流行或者非常有用的时候,它将最终成为未来的OpenGL规 范的一部分。 使用扩展的代码大多看上去如下:
if(GL_ARB_extension_name)
{ // 使用硬件支持的全新的现代特性
} else {
// } 不支持此扩展: 用旧的方式去做 使用OpenGL3.3时,我们很少需要使用扩展来完成大多数功能。
- 状态机
OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何 运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改 OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。
假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变 OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下 一个绘制命令就会画出线段而不是三角形。 当使用OpenGL的时候,我们会遇到一些状态设置函数(State-changing Function),这类函数 将会改变上下文。以及状态使用函数(State-using Function),这类函数会根据当前OpenGL的 状态执行一些操作。OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。
- 对象