\"当前颜色\"仅仅只是保持OpenGL可以出色运作所需众多状态变量中很小个.你更可以控制些比如观察,投影的类变换;线,图形绘制模式;独无 2灯光;美伦美奂物体材质.
在OpenGL中有许多状态都依靠glEnable或者glDisable来控制.每个状态变量或方式都有个预先定义值.当然,你也可以通过些特定来对当前状态进行查询.通常,你可以使用以下 6个的个典型命令来完成这需要:
glGetBooleanv,glGetDoublev,glGetFloatv,
glGetInterv,glGetPoerv,glIsEnable.
他们依靠你输入数据类型来回答有关某个状态情况.些状态有特殊查询命令(比如glGetLight*,glGetError,glGetPolygonStipple等等).
另外!!你可以通过压栈命令(glPushAttrib,glPushClientAttrib)方式临时修改他们,不久后又恢复(glPopAttrib,glPopClientAttrib)他们.对于些临时改变,他们往往更加有效率.
有关状态机
般来讲,个状态机设计模式包含:
1.组状态集(states),
2.个起始状态(startstate),
3.组输入符号集(alphabet),
4.个映射输入符号和当前状态到下状态转换(transitionfunction)计算模型.
当输入符号串模型随即进入起始状态它要改变到新状态依赖于转换在有限状态机中会有有许多变量例如状态机有很多和动作(actions)转换(Mealy机)或状态(摩尔机)关联动作多重起始状态基于没有输入符号转换或者指定符号和状态(非定有限状态机)多个转换指派给接收状态(识别者)个或多个状态等等.
状态变化机制状态变化实际是由Event事件驱动可以认为是Event-condition-State在MVC模式般是Event-condition-Action实现状态模式需要封装是Event-condition-State中condition-State部分
最新评论