c++ - 为什么SDL_PollEvent这么慢?

标签 c++ sdl-2

我一直在将模拟器编程为附加项目,而现在我正在着手提高效率。我已经摆脱了像许多SDL_RenderDrawPoint一样缓慢的工作,但是现在我陷入了困境。

香港专业教育学院设法缩小到SDL_PollEvent。 Ive简化了我的主循环和事件循环,使它们看起来类似于简单的SDL教程。
当我注释掉事件循环时,模拟器运行得非常快。
Ive还使用Visual Studio性能分析器进行检查,当然,SDL_PollEvent占用了约94%的CPU时间。

slow SDL_PollEvent

我的模拟器会做所有事情的地方是ppuNptr->cycle(),它只占1.48%。

不幸的是,我无法在另一个项目中复制它,所以我很茫然。

在轮询事件之前我应该​​做些什么吗?

我还能怎么调试呢?

目前我在Windows 10上使用Visual Studio 2019和sdl 2.0.10。

最佳答案

在对仿真器进行性能分析时,我也遇到了这一问题。对我来说,答案是将SDL2的版本降级为2.0.8。

我正在运行SDL2版本2.0.12,并在评论中采纳了keltar的建议,并降级为2.0.8,并且我不再遇到导致性能降低的SDL_PollEvent问题。因为我的模拟器不再遇到FPS低的问题,所以这为我解决了这个问题。

我将查看错误票证系统中是否已报告此问题,并从2.0.9版开始出现此问题,如果没有,请向SDL2报告。

关于c++ - 为什么SDL_PollEvent这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639564/

相关文章:

C++ setenv 解析其他变量

c - 是什么导致每次渲染新颜色之间出现第二次延迟?

c++ - 在Ubuntu上使用C++和cmake使用SDL2 + SDL2Image加载PNG

ios - 如何使用 ffmpeg/sdl 在 UIView 中播放视频

c - 在 C 中获取屏幕分辨率,w/o "windows.h"

C++ if 语句未将 "-f"注册为可能值

c++ - eclipse 无法包含包含文件中的某些枚举

c++ - 像 std::function 这样的自毁类型删除类是如何实现的?

c++ - POD 类型与普通的标准布局类型完全等同吗?

C++ 和 SDL2 网格移动太快