OpengGL是一个状态机
OpenGL是一个状态机,尤其是使用固定功能的管线。可以设置它的各种状态(或模式),然后让这些状态一直生效,直到再次修改它们。
每个状态变量(或模式)都有一个默认值。在任何时候都可以向系统查询每个状态变量的当前值。一般情况下,可以使用glGetBooleanv(),glGetDoublev(),glGetIntegerv(),glGetfloatv(),glGetPointerv(),或glIsEnabled(),之一来完成这个任务。具体选择的函数取决于希望返回的结果的数据类型。
有些状态变量还有更为特定的查询函数,如glGetLight*(),glGetError()或glGetPolygonStipple()等。
还可以使用glPushAttrib(),glPushClientAttrib()函数把状态变量集合保存到一个属性栈中,对它们进行临时的修改,以后再用glPopAttrirb()或glPopClientAttrib()恢复这些值。如果需要对状体变量进行临时修改,就应该使用这些函数。