OpenGL上下文
OpenGL上下文
状态机
状态机的全称是有限状态自动机,自动两个字也是包含重要含义的。给定一个状态机,同时给定它的当前状态以及输入,那么输出状态时可以明确的运算出来的。
通俗来讲状态机不是实际机器设备,而是一个数学模型,通常体现为一个状态转换图。涉及到的相关概念是 State 状态,Event 事件,Action 动作,Transition 转换。
通常具有以下特点:
- 有记忆功能,能记住其当前的状态。
- 可以接收输入(Event),根据输入的内容(Event)和⾃己的原先状态(State),修改⾃己当前状态,并且可以有对应输出(Action)。
- 当进⼊特殊状态(停机状态)的时候,不再接收输⼊入,停⽌工作。
OpenGL上下文(Context)
OpenGL上下文是⼀个巨大的状态机,保存了OpenGL中的各种状态。OpenGL提供的函数就是为了让这个状态机切换不同的状态,并产生不同的动作,来完成图形的渲染。
通过状态记得特点应用到OpenGL上来:
- OpenGL可以记录⾃己的状态(如当前所使用的颜⾊、是否开启了混合功能等)。
- OpenGL可以接收输入(当调⽤用OpenGL函数的时候,实际上可以看成 OpenGL在接收我们的输⼊入),如我们调⽤用glColor3f,则OpenGL接收到这个输入后会修改⾃己的“当前颜色”这个状态。
- OpenGL可以进⼊入停止状态,不再接收输入。在程序退出前,OpenGL总会先停止工作。
同一个应用程序中,可以创建多个OpenGL上下文,但是同一时间只有一个上下文是被操作的,所以操作不同的上下文需要使用OpenGL提供的函数进行切换。
OpenGL上下文切换产⽣生较大的开销,但是不同的绘制模块,可能需要使用完全独⽴立的状态管理。因此,可以在应⽤程序中分别创建多个不同的上下文,在不同线程中使⽤不同的上下文,上下⽂之间可以共享纹理理、缓冲区等资源。这样的方式,会比反复切换上下文,或者⼤量修改渲染状态,更加合理⾼效的.
版权申明
本文系作者 @何健源 原创发布在思维代码站点。未经许可,禁止转载。
暂无评论数据