SDL + OpenGL,具有周期性尖峰的不规则帧时间

时间:2017-08-25 16:12:06

标签: c++ opengl sdl-2

我正在使用SDL开发一个应用程序,很高兴。我注意到动画中有一些小的冻结。我已经编写了一个具有最小功能的单独项目,我发现即使使用非常基本的设置也会出现问题。

这是代码:

renderContent

程序记录10秒内帧之间的时间,并将结果保存在文本文件中。

我使用python绘制数据我得到了这个:

enter image description here

横轴表示帧时间,以毫秒为单位。纵轴表示自上一帧起经过的时间。也是以毫秒为单位。

正如您所看到的,帧之间的时间非常不规则并且存在周期性尖峰(尖峰之间约1秒)。

我已将CMake项目上传到github repository,因此您可以根据需要进行测试。

我已经使用集成和专用GPU(Intel 530HD和NVIDIA GTX 960M)进行了测试。

SDL版本是2.0.5。

我在Windows 10和Ubuntu 16.04 LTS上测试过它。

修改 我已将应用程序移植到GLFW,同样的情况也发生了。因此,SDL中存在一个错误非常不可思议。我相应地更新了git repo,现在有两个CMake项目。

EDIT2: 我已经在另一台计算机上测试过并且运行正常。 enter image description here 我不知道发生了什么。这可能是硬件问题吗?那么为什么当我运行其他应用程序时它不会发生?

司机问题?非常不喜欢,因为它使用英特尔和NVIDIA GPU。此外,它发生在Ubuntu和Windows上。

1 个答案:

答案 0 :(得分:1)

我有类似的行为(虽然由于CPU过热导致更长和更低的平台,而不是尖峰),因此决定暂时降低时钟频率。如果您的PC发生这种情况,您可以尝试升级内部冷却器或添加外部冷却器。或者只是降低房间空调的温度设置。

当然,夏天总会出现问题。

Here's where I've posted about it