状态机:作为一个状态机的OpenGL

OpenGL是以状态机来实现.你输入各种区别状态会直保留到当你再次改变它们.那么现在你知道了,比如像\"当前颜色\"的类东西其实也就是个状态变量.你可以设置你想要任何颜色,白色,红色,黄色等等.当然如果你直没有改变这状态,后面所有被绘制物件都将以这颜色状态显示.
\"当前颜色\"仅仅只是保持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部分
Tags:  状态机图 有限状态机 状态机

延伸阅读

最新评论

发表评论