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上下文切换产⽣生较大的开销,但是不同的绘制模块,可能需要使用完全独⽴立的状态管理。因此,可以在应⽤程序中分别创建多个不同的上下文,在不同线程中使⽤不同的上下文,上下⽂之间可以共享纹理理、缓冲区等资源。这样的方式,会比反复切换上下文,或者⼤量修改渲染状态,更加合理⾼效的.

分类: 音视频开发 标签: OpenGL状态机

评论

暂无评论数据

暂无评论数据

目录