OpenGL是一个状态机,很多状态一旦设定除非修改,否则将一直有效。这些状态如何被设置和管理呢?
清除窗口
函数glClearColor用于设置当前清除颜色,它由4个参数,分别指定red、green、blue和alpha的值,范围限定在[0,1]之内。
函数glClear用当前清除值清除制定的缓冲区,常用缓冲区和名称如下图。
基本状态管理
OpenGL维护了许多状态和状态变量,其中大部分默认是“否”的状态,激活这些状态可能有很大的开销。为了打开或关闭状态,可以使用glEnable和glDisable函数。
通过glIsEnable、glGetBooleanv、glGetIntegerv等函数可以查询许多状态的当前值。
属性组
OpenGL将相关状态进行归组,称为属性组。比如,GL_LINE_BIT包含了5个状态变量:直线的宽度,GL_LINE_STIPPLE启用状态、直线点画模式、直线点画重复计数器和GL_LINE_SMOOTH启用状态。
OpenGL大约有20个不同的属性组,他们都可以用glPushAttrib和glPopAttrib进行保存和恢复。其中前者的形式为:void glPushAttrib(GLbitfield mask),mask为后缀是_BIT的掩码位,OpenGL提供的数学组如下图所示。