OpenGL通常被描述为“状态机”,因为据我所知,它由可以通过其API设置的全局变量组成,它们会更改/定义它的行为。例如,可以设置当前颜色或转换矩阵。许多状态变量的值范围是连续的。
然而,据我所知,计算机科学中的“状态机”或“有限状态机”被定义为有向状态图(作为节点)和转换图(作为有向边)。
是用于描述OpenGL的“状态机”一词,与一般计算机科学中的“状态机”( 已定义 )相同。
发布于 2016-04-09 03:53:26
许多状态变量的值范围是连续的。
GLfloat,就像普通的float,有固定的位大小。32位IEEE-754只有32位存储器.因此,它只能假定2^32不同的值(尽管其中相当多的值将被认为是相同的或不可比较的)。虽然2^32很大,但仍然是非常有限的。
OpenGL上下文具有一组指定的有限状态值.每个状态值都可以接受一组有限的离散值。因此,可以将OpenGL上下文建模为一个有限的状态机,状态中的值更改只是在进行状态转换(尽管OpenGL对象,特别是程序对象,在某种程度上使这个视图复杂化)。
尽管如此,"OpenGL是一个状态机“语句的要点实际上与实际的有限状态机无关。该声明通常被说成是提醒人们:
OpenGL是一个状态机,因为它会记住它的状态。除非您显式地执行转换,否则它仍然处于它所处的状态。
基本上,它是一个提醒,要么跟踪当前状态,要么在呈现循环开始时设置所有状态,以确保它是您认为的状态。
https://stackoverflow.com/questions/36512216
复制相似问题