gpt4 book ai didi

SDL_PollEvent 与 SDL_WaitEvent

转载 作者:行者123 更新时间:2023-12-02 00:09:49 27 4
gpt4 key购买 nike

所以我正在阅读这篇文章,其中包含“SDL 中多线程编程的提示和建议”-https://vilimpoc.org/research/portmonitorg/sdl-tips-and-tricks.html

它谈到 SDL_PollEvent 效率低下,因为它可能导致 CPU 使用率过高,因此建议改用 SDL_WaitEvent。

它显示了两个循环的示例,但我看不出这如何与游戏循环一起使用。 SDL_WaitEvent 是否只应由不需要不断更新的事物使用,即如果您正在运行游戏,则每帧都会执行游戏逻辑。

我认为它唯一可以用于像绘画程序这样的程序,其中只需要对用户输入进行操作。

我认为应该继续使用 SDL_PollEvent 进行通用游戏编程是否正确?

最佳答案

如果您的游戏仅根据用户输入更新/重新绘制,那么您可以使用 SDL_WaitEvent。然而,即使没有用户输入,大多数游戏也会有动画/物理效果。所以我认为 SDL_PollEvent 最适合大多数游戏。

SDL_WaitEvent 可能有用的一种情况是,如果您将它放在一个线程中,而将动画/逻辑放在另一个线程中。这样,即使 SDL_WaitEvent 等待很长时间,您的游戏也将继续绘画/更新。 (编辑:这实际上可能不起作用。请参阅下面 Henrik 的评论)

对于如文章所述使用 100% CPU 的 SDL_PollEvent,当您检测到游戏的运行速度超过所需的每秒帧数时,您可以通过在循环中添加 sleep 来缓解这种情况。

关于SDL_PollEvent 与 SDL_WaitEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860243/

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