gpt4 book ai didi

c++ - OpenGL 窗口应用程序多久检查一次事件更新?

转载 作者:行者123 更新时间:2023-11-28 07:27:29 26 4
gpt4 key购买 nike

我想了解窗口应用程序(如 FreeGLUT、GLFW)中的回调函数是如何工作的。

他们每秒检查多少次键盘/鼠标/调整大小事件?

它是否取决于帧速率,它是恒定的还是特定于操作系统?

最佳答案

一般来说,无需深入了解 Unix 或 Windows 实现的细节,回调是从一个主事件循环调用的,大致如下所示:

Loop forever {
Get a message from the event queue.
Process the message
}

“Get a message”阶段如果等待消息出现在队列中, sleep 时间会非常短,大​​概不到一毫秒。事件队列将包含与应用程序相关的每条消息,包括鼠标按钮按下、鼠标移动事件、键盘事件和窗口事件(如调整大小和显示)。

“处理消息”步骤将接收一个事件并将其分派(dispatch)给与该事件相关的任何对象。因此,例如,单击鼠标可能会导致调用 Button 小部件的回调。或者,如果您的 OpenGL 绘图区域设置了输入处理程序回调,则鼠标单击将导致调用该函数。

这里有一些资源可以帮助您了解有关该过程的更多信息:

对于 Windows:http://en.wikipedia.org/wiki/Message_loop_in_Microsoft_Windows

对于 X/Motif:http://www.unix.com/man-page/all/3x/XtAppMainLoop/

如果您想查看整个过程中的具体步骤(有很多),您可以尝试在您感兴趣的函数中设置断点,例如您的主要 OpenGL 绘制例程或输入回调函数。然后调用堆栈将向您展示您是如何到达那里的。

关于c++ - OpenGL 窗口应用程序多久检查一次事件更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18493504/

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