OpenGL通常被描述为"状态机"因为,据我所知,它由全局变量组成,这些变量可以通过其API进行设置,并且可以更改/定义其行为。例如,可以设置当前颜色或变换矩阵。许多状态变量具有连续的值范围。
然而,据我所知,一台"状态机"或者"有限状态机"在计算机科学中被定义为状态(作为节点)和转换(作为有向边)的有向图。
是#34;状态机"用于描述OpenGL的术语与"状态机"相同这是一般计算机科学中的defined。
答案 0 :(得分:6)
许多状态变量具有连续的值范围。
GLfloat
与常规float
非常相似,具有固定的比特大小。 32位IEEE-754只有32位存储空间。因此,它只能假设2 ^ 32个不同的值(尽管这些值中的相当一部分将被视为相同或无法比拟)。虽然2 ^ 32很大,但它仍然非常有限。
OpenGL上下文具有明确且有限的状态值集。并且每个状态值可以采用一组有限的离散值。因此可以将OpenGL上下文建模为有限状态机,在状态中更改值只是简单地进行状态转换(尽管OpenGL对象,特别是程序对象,在某种程度上使这个视图复杂化)。
所有这一切," OpenGL的主要观点是状态机"声明确实没有没有与实际的有限状态机有关。该声明通常被称为提醒:
OpenGL 将记住上次设置到上下文中的状态,即使您忘记了上次设置它的内容。
即使您忘记了上次设置的内容,OpenGL也会记住上次设置的状态。
OpenGL是一个状态机,因为它记住了它的状态。除非您明确执行转换,否则它将保持其所处的状态。
基本上,它提醒您要么跟踪当前状态,要么只在渲染循环开始时设置所有状态,以确保它符合您的想法。