首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL是“状态机”吗?

OpenGL是“状态机”吗?
EN

Stack Overflow用户
提问于 2016-04-09 02:57:33
回答 1查看 1.7K关注 0票数 2

OpenGL通常被描述为“状态机”,因为据我所知,它由可以通过其API设置的全局变量组成,它们会更改/定义它的行为。例如,可以设置当前颜色或转换矩阵。许多状态变量的值范围是连续的。

然而,据我所知,计算机科学中的“状态机”或“有限状态机”被定义为有向状态图(作为节点)和转换图(作为有向边)。

是用于描述OpenGL的“状态机”一词,与一般计算机科学中的“状态机”( 已定义 )相同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-09 03:53:26

许多状态变量的值范围是连续的。

GLfloat,就像普通的float,有固定的位大小。32位IEEE-754只有32位存储器.因此,它只能假定2^32不同的值(尽管其中相当多的值将被认为是相同的或不可比较的)。虽然2^32很大,但仍然是非常有限的。

OpenGL上下文具有一组指定的有限状态值.每个状态值都可以接受一组有限的离散值。因此,可以将OpenGL上下文建模为一个有限的状态机,状态中的值更改只是在进行状态转换(尽管OpenGL对象,特别是程序对象,在某种程度上使这个视图复杂化)。

尽管如此,"OpenGL是一个状态机“语句的要点实际上与实际的有限状态机无关。该声明通常被说成是提醒人们:

  1. OpenGL将记住上一次设置到上下文中的状态,即使您忘记了上次将其设置为什么。
  2. OpenGL将记住上一次设置到上下文中的状态,即使您忘记了上次将其设置为什么。

OpenGL是一个状态机,因为它会记住它的状态。除非您显式地执行转换,否则它仍然处于它所处的状态。

基本上,它是一个提醒,要么跟踪当前状态,要么在呈现循环开始时设置所有状态,以确保它是您认为的状态。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36512216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档