SFML-睡眠计算
SFML - sleep calculation
我正在开发一个比较SFML和SDL的基准应用程序。我的基准测试之一是播放声音的速度。我在一个循环中多次播放声音,并计算所需的时间。我需要在播放声音之间延迟,因为我首先需要完成播放声音才能重新开始。我用SFML睡眠解决了这个问题,但我不确定我做得是否正确。可能不是因为第一次播放后,应用程序会冻结,就像它将处于无限循环中一样。如果音乐还在播放,我需要它延迟1毫秒。你能帮帮我吗?
我的功能:
void playSound()
{
sound.setBuffer(buffer);
sound.play();
}
void soundBenchmark(int numOfCycles)
{
sf::Time delayTime = sf::milliseconds(0.01);
sf::Clock clock;
for(int i = 0; i < numOfCycles; i++)
{
playSound();
while(sound.Playing) sf::sleep(delayTime);
}
sf::Time time = clock.getElapsedTime();
cout << "Time required for " << numOfCycles << " cycles playing sound: " << time.asMilliseconds() << " milliseconds.n";
}
调用主函数:
while(running)
{
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
{
window.close();
running = false;
}
}
soundBenchmark(20);
break;
}
return 0;
我知道这是一个老问题,但只是为了指出代码中的错误:sf::milliseconds()
函数的参数是以毫秒为单位的实际弹药数,作为十进制值。
因此,如果您希望它等待1ms,则应该输入sf::milliseconds(1)
。
这种行为在当前版本(截至今天的2.3)中是有效的,但我不知道在以前的版本中是否有所不同。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- SFML纹理像播放器
- OpenCV C++.快速计算混淆矩阵
- 如何使用AngelScript注册SFML Vector2运算符
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 使用 sfml 计算 FPS
- 在多台计算机上运行SFML tcp 网络程序
- SFML-睡眠计算
- 如何在另一台计算机上玩SFML游戏