gpt4 book ai didi

opengl - glutTimerFunc() 实际上做了什么?

转载 作者:行者123 更新时间:2023-12-02 06:45:29 26 4
gpt4 key购买 nike

如果我运行以下循环作为我的 OpenGL 程序的一部分:

void Loop(int state)
{
glutPostRedisplay();
glutTimerFunc(1, Loop, 0);
}

然后,我的程序运行良好,并且我可以通过拖动鼠标在场景中移动相机。

但是,如果我使用这个循环:

void Loop(int state)
{
glutPostRedisplay();
Loop();
}

我无法使用鼠标在场景中移动。正在调用循环,但它只是不处理任何鼠标或键盘输入。

我不明白这是为什么。唯一的区别是,在第一个示例中,使用计时器函数来调用 Loop(),而在第二个示例中,显式调用 Loop(),而无需任何操作。延迟。

那么,除了调用 Loop() 之外,glutTimerFunc() 实际上还在做什么?

最佳答案

在第一个示例中,glutTimerFunc 确保在 1 毫秒后调用 Loop,但它会返回并且不会等待,这意味着 在这种情况下,循环几乎立即返回。

在第二个示例中,Loop 正在调用自身,这会导致无限递归并锁定程序的主线程,这可以解释为什么在这种情况下什么都不起作用。然后,循环永远不会返回。如果您让程序运行足够长的时间,您的系统将由于无限递归而耗尽内存。

关于opengl - glutTimerFunc() 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com